删除目录中除文件夹之外的所有文件

删除目录中除文件夹之外的所有文件

我对基于终端的命令还很陌生,但是当我在远程和本地之间执行 rsync 命令时,我不小心将文件“复制”到了错误的位置(例如 /serA/items)而不是 /serA/items/count01

因此,当前 /items 目录由 count01 文件夹以及其他几个与 count01 中的内容相同的项目组成

有没有一种快速方法可以删除所有这些错误复制的项目(有不同的文件格式)而不触及 count01 文件夹?虽然我可以使用“rm -f”,但这是一个乏味的过程,因为有超过 100 个文件......

此外,我无法手动删除这些文件,因为它们位于其他人的名称下,并且权限似乎已被锁定。

答案1

你有一堆文件和文件夹:

$ ls
count01  file_a  file_b  file_c  folder_a  folder_b  folder_c

要删除除 之外的所有内容count01

$ rm -r !(count01)
$ ls
count01

答案2

find . -maxdepth 1 -type f -delete

但如果您没有删除它们的权限,这将不起作用。

答案3

我建议使用 pipline 命令如下:

find "actual/path" -type f | grep -v "actual/path/plus/foler/to/conserve" |xargs rm

第一部分:使用以下命令查找实际目录中的所有文件-type f

第二部分:排除您需要保存的路径-v

最后一部分:删除第一部分和第二部分响应的所有文件

简而言之,您可以简单地执行以下操作:

cd
find . -type f | grep -v /serA/items/count01 |xargs rm

使用此命令,路径中包含的所有文件和文件夹都会被保留,这真是太棒了!

答案4

命令 :

ls -ltr|grep "^-"|awk '{print $9}'|xargs rm

始终遵循循序渐进的步骤规则。它很容易理解并且不言自明。但同意汤姆·亨特的观点,要执行上述命令,您需要获得许可。

相关内容