Linuxマシンには、次の命名法の何百万ものファイルがあります。
1559704165_a1ac6f55fef555ee.jpg
最初の10桁はタイムスタンプで、その後に続く1桁_
は特定のIDです。特定のファイル名IDに一致するすべてのファイルを別のフォルダに移動したい。
私はファイルのあるディレクトリでこれを試しました
find . -maxdepth 1 -type f | ??????????_a1ac*.jpg |xargs mv -t "/home/ubuntu/ntest"
ただし、次のエラーが表示されます。
bash 1559704165_a1ac6f55fef555ee.jpg: command not found
試したところ、mv ??????????_a1ac*.jpg
引数リストが長すぎるというエラーが発生しました。少なくとも15の異なるファイル名パターンがあります。それらを移動するにはどうすればよいですか。
| ??????????_a1ac*.jpg
:bashは、いくつかのファイル名にそれを展開し、最初のビーイング1559704165_a1ac6f55fef555ee.jpg
、あなたが終わるSI 、その2番目のパイプステージで実行しようとしました:1559704165_a1ac6f55fef555ee.jpg next_matching_filename 3rd_matching_filename ... nth_matching_filename
。代わりにそのファイル名にフィルターをかけようとした(そのための以下の回答を参照)