假设有一个文件夹,其中包含文件、符号链接和子目录,如下所示:
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 {} \;