删除所有没有目标字符串的文件?

删除所有没有目标字符串的文件?

恢复的文件存储在 /myPhotorec 中。

目标是递归地 grep 遍历每个文件,如果是的话不是有字符串“44c9ea3abbd24”文件内容(不是文件名),然后将其删除。目标是一个 python .py 文件,并由文件恢复名称随机重命名。

如果无法做到这一点,那么也许可以将包含的文件复制到目录 /filtered?

答案1

find /myPhotorec -type f ! -exec grep -qF '44c9ea3abbd24' {} ';' -print -delete

这将找到目录中或目录下的所有常规文件/myPhotorec,测试它们是否包含给定的字符串(在文件的内容中),对于每个不包含该字符串的文件,显示路径名并将其删除。

如果您find不支持-delete,则将该部分替换为-exec rm {} +.

如果您想手动确认每次删除,请更改-delete-ok rm {} ';'

关于find ... -exec ...了解“find”的 -exec 选项

答案2

我想就这样做:

rm -rf `find /myPhotorec -name "*" | grep  -v "44c9ea3abbd24"`

相关内容