如何移动命令输出的所有文件?


22

我有这个grep命令来查找文件中没有单词“附件”的文件。

grep -L -- Attachments *

我想移动该命令输出的所有文件。我该怎么做呢?我要用管道吗?我是否在完整脚本中使用比较罗if的if / then语句?

Answers:


18

如果您不知道如果文件名包含可能产生匹配项的新行,制表符,空格或glob组合,那么一次性的情况可能会更容易:

mv $(grep -L Attachments *) dest_dir

36

您要做的是使用pipe和 greps -Z选项:

使用GNU grep和mv

grep -LZ -- Attachments * | xargs -0 mv -t target_directory

-Z联合xargs -0柄任何文件名有特殊字符。

使用BSD grep和mv(例如在MacOS X上)

grep -L --null -- Attachments * |
while IFS= read -r -d "" file; do 
    mv "./$file" target_directory
done

在BSD,grep -Z手段解压缩grep --null适用于BSD都和GNU。BSD mv缺乏选择-t

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.