다음과 같이 파일, 심볼릭 링크 및 하위 디렉터리를 포함하는 폴더가 있다고 가정합니다.
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 {} \;