次のように、一度に複数の番号が付けられたフォルダを作成できます。
mkdir Season\ {1,2,3,4,5}
forループなしでonelinerで次のコマンドを実行する方法はありますか?
mv 01.* Season\ 1
mv 02.* Season\ 2
mv 03.* Season\ 3
mv 04.* Season\ 4
mv 05.* Season\ 5
これを行うZSH方法がある場合は、ボーナスポイントがあります。
ベストアンサー1
そしてzsh
:
autoload zmv # best in ~/.zshrc
zmv -n '(<1-5>).*' 'Season $(($1))'
(嬉しいときは削除-n
)
ファイルごとに1つのコマンドを呼び出すので、mv
質問の5つのコマンドよりも効率が悪くなります(組み込みコマンドを取得するために事前に実行しない限り)。mv
zmodload zsh/files
mv
Aperl
のrename
代替:
rename -n '$_="Season $1/$_" if /0*(\d+)/' 0[1-5].*
-n
(満足すれば削除)
rename
システムコールが呼び出されるため、rename()
同じファイルシステム内でファイルを移動するときにのみ機能します(一方、mv
コピー+リンク解除はファイルシステムの境界を超えてファイルを移動するときに使用されます)。
使用mmv
(FS境界を超える移動はサポートされていますが、すべての属性が保持されるわけではなく、シンボリックリンクの場合は、ターゲットファイルのコピーが作成されます):
mmv -n '0[0-9].*' 'Season #1/'
-n
(満足すれば削除)