모든 하위 디렉터리를 제거하는 방법은 무엇입니까? (유닉스 쉘 스크립팅)

Jan 15 2021

"cdrs-roaming"이라는 디렉토리가 있습니다. 매일 하나 이상의 .zip 파일을 받고 다음과 같이 압축을 풉니 다.

#!/bin/bash
for i in *.zip
do
    j=${i//\.zip/} mkdir $j
    cd $j unzip ../$i
    cd -
done 

예를 들어 "example1.zip"과 "example1"이 있습니다. "example2.zip"및 "example2"

다음과 같이 모든 zip 파일 (이 경우 : "example1.zip"및 "example2.zip")을 제거합니다.

#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;

그래서 "example1"과 "example2"라는 디렉터리 (또는 폴더-차이점을 잘 모르겠습니다)를 제거하고 싶습니다. 나는 이것을 시도했다 :

#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

그러나 "cdrs-roaming"도 제거합니다. 나는 또한 사용하려고 시도했다 :

find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

그러나 다음을 반환합니다. find : '/ cdrs-roaming /': 해당 파일이나 디렉토리가 없습니다.

이 일에 대한 아이디어가 있습니까? "cdrs-roaming"내의 디렉토리 만 삭제해야하는데 그 안에있는 다른 것은 제거 할 수 없습니다 (내 .sh 파일이 그 안에 있습니다).

답변

2 user1934428 Jan 15 2021 at 15:17

bash를 사용하고 있으므로

rm -rf /dados/cdrs-roaming/*/

마지막 슬래시는 bash가 패턴을 디렉토리로만 확장하도록합니다.

1 TimurShtatland Jan 15 2021 at 05:27

사용 -mindepth 1옵션 :

find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;