番号付きのファイルを含むディレクトリがあります。 1_foo.txt 2_bar.asc 13_test.pngであり、できるだけ単純なbashコマンドを使用して、それらを個々のディレクトリ(1、2、13など)に移動したい。
番号付きディレクトリの作成は簡単でした。
mkdir $(seq 1 15)
また、ファイルをそれぞれのディレクトリにコピーするコマンドを考え出しました。
seq 15 -1 1 | xargs -I@ mv @_* @
ただし、xargsで使用すると*は通常の文字として解釈され、「mv:File '15_ *' notfound。」のようなエラーが発生するため、これは機能しません。
Xargsによって呼び出されるコマンドでワイルドカードとして*を使用する簡単な方法はありますか?
そのためにxargs
を使用しないでください。 for
ループを使用します:
for i in $(seq 1 15); do
mv ${i}_* $i
done
さらに良いのは、seq
の代わりに 中括弧の展開 を使用することです。
mkdir {1..15}
for i in {1..15}; do
mv ${i}_* $i
done