폴더에서 기호 파일을 삭제하고 하위 디렉터리는 그대로 유지하는 방법은 무엇입니까?

폴더에서 기호 파일을 삭제하고 하위 디렉터리는 그대로 유지하는 방법은 무엇입니까?

다음과 같이 파일, 심볼릭 링크 및 하위 디렉터리를 포함하는 폴더가 있다고 가정합니다.

files: file1, file2, file3, file4
symbolic links: link1-->file2, link2-->file3
subdirectories: dir1, dir2

file1, file3, file3, file4, link1 및 link2를 삭제하고 싶습니다. 하지만 dir1과 dir2는 변경하지 않고 그대로 두세요.

모든 파일 이름을 포괄하는 패턴은 없습니다 file*. 위의 파일 이름은 단지 예일 뿐이며 실제로는 다양한 이름이 있습니다.

답변1

find매개변수 와 함께 사용할 수 있습니다 type.

find . -maxdepth 1 -type f -exec rm -f {} \;

이 섹션을 제거하여 테스트 실행을 수행하여 -exex rm -f {} \;삭제될 파일을 확인할 수 있습니다.

답변2

사용하는 것이 쉬운 방법입니다.

$ rm ./*

여기서는 재귀적 삭제( )를 사용하지 않으므로 -r상위 디렉터리의 파일(숨겨진 파일 제외)만 삭제해야 합니다.

답변3

Bash 사용(심볼릭 링크 무시):

for file in *; do [[ -f $file ]] && rm -- "$file"; done

답변4

sudo mkdir a b c d e

sudo touch a/1 b/2 c/3 d/4 e/5 e/a e/b   
ls                  
a  b  c  d  e  pqr  xyz

cd a/         
ls   
1

cd ../e/     
ls      
5 a b

cd /var/warehouse/abc/  
find . -type f ! -path "./a*" ! -path "./b*"        
./d/4   
./e/a   
./e/b   
./e/5   
./c/3

sudo find . -type f ! -path "./a*" ! -path "./b*" -exec rm -f {} \;

관련 정보