複数のファイルの名前を1から無限(すべてのファイルを含む)に変更するには?
私のファイルは次のとおりです。
file.jpeg.jpg
fileA.jpeg.jpg
fileB.jpeg.jpg
出力:
1.jpeg.jpg
2.jpeg.jpg
3.jpeg.jpg
Cygwinを使用しているため、パッケージをインストールできません
ベストアンサー1
努力する:
n=0; for f in *.jpg; do mv "$f" "$((++n)).jpeg.jpg"; done
あるいは、同じ内容が複数行にわたって広がります。
n=0
for f in *.jpg
do
mv "$f" "$((++n)).jpeg.jpg"
done
どのように動作しますか?
n=0
これは変数
n
nを初期化します。for f in *.jpg; do
これにより、名前で始まる現在のディレクトリを繰り返すループが始まります
.jpg
。mv "$f" "$((++n)).jpeg.jpg"
必要に応じてファイル名が変更されます。 Bashは
$((...))
算術演算を実行します。ここではn
、実行するたびに増加するようにします。done
これはサイクルの終わりを示します。
このコードは、名前にスペース、タブ、改行、またはその他の難しい文字を含むファイルが含まれている場合にも機能します。
注文する
glob はtest*.in
ファイルのリストに展開されます。アルファベット順に注文する。これに関する文書は次のとおりですman bash
。
bashは各単語で*、?と[文字を検索します。これらの文字のいずれかが現れると、その単語はパターンと見なされます。 アルファベット順のリストに置き換えられましたパターンに一致するファイル名(以下のパターン一致を参照)[強調表示します。 ]
アルファベット順の意味は地域によって異なります。