たくさんのファイルにオフバイワンの名前を付けたので、「1」で始まるファイルの名前を2以外の同じファイル名に変更したいと思いました。
たとえば、mv 1.4.5.txt 2.4.5.txt
またはmv 1-chart.jpg 2-chart.jpg
など。
mv 1* 2*
を試しましたが、2*
をディレクトリとして解釈するため、これは受け入れられませんでした。
ワイルドカードはそれを行いません。 echo mv 1* 2*
の結果を見てください。より良い方法は(man rename
)です:
rename 's/^1/2/' 1*
mmv
をインストールすると(引用符で囲む必要があります-シェルではなくmmv
自体によって解釈されるように)、置換ワイルドカードの形式は#n
nを再置換する番目 パターンのワイルドカード:
Usage: mmv [-m|x|r|c|o|a|l] [-h] [-d|p] [-g|t] [-v|n] [from to]
Use #[l|u]N in the ``to'' pattern to get the [lowercase|uppercase of the]
string matched by the N'th ``from'' pattern wildcard.
A ``from'' pattern containing wildcards should be quoted when given
on the command line. Also you may need to quote ``to'' pattern.
Use -- as the end of options.
例えば
$ mmv -n -- '1*' 2#1
1.sh -> 2.sh : delete old 2.sh? n
1-chart.jpg -> 2-chart.jpg
1.4.5.txt -> 2.4.5.txt
1.csv -> 2.csv
(-n
オプションを使用すると、予行演習を実行できます-削除して、実際にファイルの名前を変更します。)