如何删除一个文件夹中的符号文件,但保持其子目录不变?

如何删除一个文件夹中的符号文件,但保持其子目录不变?

假设有一个文件夹,其中包含文件、符号链接和子目录,如下所示:

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

我想删除 file1、file3、file3、file4、link1 和 link2。但保持 dir1 和 dir2 不变。

请注意,没有一种模式file*可以覆盖所有文件名。上面的文件名只是举例,实际上它们的名称是多种多样的。

答案1

您可以findtype参数一起使用。

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 {} \;

相关内容