我的硬盘上有重复文件列表.我很难检查列表中是否有文件.Grepping
grep $1 $2 > /dev/null || echo $1
Run Code Online (Sandbox Code Playgroud)
作品.但我不能让它在find命令的-exec-Part中工作.
find 250G_EXT4/ -type f -exec grep "{}" duplicates_sorted.txt \> /dev/null \|\| echo {} \;
Run Code Online (Sandbox Code Playgroud)
消息是
grep: >: Datei oder Verzeichnis nicht gefunden (File or directory not found)
grep: ||: Datei oder Verzeichnis nicht gefunden ...
grep: echo: Datei oder Verzeichnis nicht gefunden ...
Run Code Online (Sandbox Code Playgroud)
有没有人知道逃脱序列是正确的?或许是一个不同的想法?
为什么不简单
find | grep -vFf duplicates_sorted.txt -
Run Code Online (Sandbox Code Playgroud)
这也应该快得多.
(该-F标志指定文字匹配,即没有正则表达式匹配.否则a.c将匹配abc等)
find -exec只需一个命令; 单个命令可以是一个传递给它的任意复杂脚本的shell:
find -exec sh -c 'grep -q "$1" file || echo "$1"' dummy {} \;
Run Code Online (Sandbox Code Playgroud)
我们sh -c使用第一个参数作为$0传递虚拟占位符值.