awkの出力をmvの入力として使用

awkの出力をmvの入力として使用

私は小さなサイズのすべての画像ファイルを見つけてディレクトリに移動するスクリプト(または1行)を作成しようとしています。に基づいてこの答えはAsk Ubuntuから来ました。、両方のサイズが500未満のファイルのリストを生成できました。一般的な画像ファイルもすべて見つけることができます.jpg

find -E . -regex ".*\.(jpg|gif|png|jpeg)" -type f -exec identify -format '%w %h %i\n' '{}' \; | awk '$1<500 && $2<500' | awk '{print $3}'

2番目awkは、私が望むファイル名だけを印刷することですmvこの出力をどのように入れることができますかmv


最初の出力の例は次awkのとおりです。

123 456 ./smallimage.jpg
333 333 ./square.png

2番目はawk与えられました。

./smallimage.jpg
./square.png

mvただし、必要な最終コマンドは次の形式であるため、このファイル名のリストをコマンドへの入力にインポートする方法が見つからないようです。mv <file list> ./small_images/

ベストアンサー1

次の機能を使用してマージされmvました。awksystem()

awk '$1<500 && $2<500 {system("mv "$3" /destination")}

mv必要に応じてコマンドを変更してください。ここでは以下を使用しました。

mv /file_(third_field)_from_awk /destination

また、複数の必要はなく、awk上記のように1つだけで十分です。

おすすめ記事