我对基于终端的命令还很陌生,但是当我在远程和本地之间执行 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
始终遵循循序渐进的步骤规则。它很容易理解并且不言自明。但同意汤姆·亨特的观点,要执行上述命令,您需要获得许可。