ディレクトリにはランダムに名前が付けられたファイルがたくさんあります'.wav'
。例えば
090913yui.wav
jiyafa123.wav
.
.
.
awe-6rt.wav
ファイル名を次に変更したい
file1.wav
file2.wav
.
.
など。
誰でも同じことをする方法を助けることができますか?端末を介してのみサーバーに接続できます。したがって、いくつかのコマンドを使用するだけです。
答え1
ファイル名ワイルドカードパターンが*.wav
変更したいすべての名前と一致すると仮定すると、次のループを使用して、一致する名前の名前を必要に応じて変更できます。
n=1
for name in *.wav; do
while [ -e "file$n.wav" ]; do n=$((n+1)); done
mv -- "$name" "file$n.wav"
done
これは一致するすべての名前を繰り返します。各名前に対して、$n
名前がfile$n.wav
まだ存在しない整数を探します。次に、現在の名前をその名前に変更します。
答え2
使用真珠rename
(すべてのオペレーティングシステムとシェルで動作し、ツールボックスに配置する必要があります):
rename -n 's/.*/"file" . ++$::c . ".wav"/se' ./*.wav
以下を提供します。
rename(090913yui.wav, file1.wav)
rename(jiyafa123.wav, file2.wav)
またはゼロパディングを使用してください。
rename -n 's/.*/"file" . sprintf("%.3d", ++$::c) . ".wav"/se' ./*.wav
以下を提供します。
rename(./090913yui.wav, file001.wav)
rename(./jiyafa123.wav, file002.wav)
スイッチの削除-n
、別名。試運転あなたの試みが満足なとき実際の名前に変更。
答え3
zshのzmvの使用:
autoload -Uz zmv
n=0; zmv -n '*.wav' 'file$((++n)).wav'
または、l
ファイルがls
出力やその他のほとんどの項目で数字でソートされるように、0から幅3まで数字を埋めます。
n=0; zmv -n '*.wav' 'file${(l[3][0])$((++n))}.wav'
満足すれば削除-n
(テスト実行)します。潜在的な競合があるかどうかを事前に確認してください。
n
一部のファイルの名前が変更された場合は、既存のファイルの最大数に初期化してfile<number>.wav
モード*.wav
をに変更します(^file<->).wav
。