特定の文字を含むファイルをgrepして別のフォルダに移動する必要があるLinux

特定の文字を含むファイルをgrepして別のフォルダに移動する必要があるLinux

名前に「エラー」または「トラフィック」を含むファイルを選択する必要があります。

abc_ERRor.csv
raError.csv
bsn_Error.csv
bbbctraffic.csv
ccc_traffic.csv
...

Error_directorytraffic_directory名前に従ってそのディレクトリに移動します。

試しましたが成功しませんでした。

mv $(ls test_file | grep -l 'Error>' *) Error_directory

コマンドラインでこれを行うにはどうすればよいですか?

ls test_file | grep 'Error'

ベストアンサー1

lsファイル名に表示される文字がさまざまなため、出力を解析するのは良い考えではありません。より良い解決策は次のとおりです。

find ./test_file -iname "*error*" -print0 | xargs -0 -I {} mv {} Error_directory

-inameこのオプションに注意してください。これにより、大文字と小文字を区別しない一致が返され、ファイルを検索して移動できます。たとえば、次のようになります。

abc_ERRor.csv
error_123.csv
ErRoR_77.csv

大文字と小文字を区別せずに検索する必要がない場合は、次のように単純なもので十分です。

mv test_file/*Error* Error_directory

追加資料:

xargs 区切り記号の問題

バッシュトラップ

おすすめ記事