添付ファイルという単語のないファイルを見つけるために、このgrepコマンドがあります。
grep -L -- Attachments *
そのコマンドから出力されるすべてのファイルを移動したい。それをbashでどのように行うのですか?パイプを使用しますか?完全なスクリプトで、より冗長なif / thenステートメントを使用しますか?
添付ファイルという単語のないファイルを見つけるために、このgrepコマンドがあります。
grep -L -- Attachments *
そのコマンドから出力されるすべてのファイルを移動したい。それをbashでどのように行うのですか?パイプを使用しますか?完全なスクリプトで、より冗長なif / thenステートメントを使用しますか?
回答:
あなたがしたいことは、パイプとgrep
s -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