pltというファイル名をまとめて変更する必要がありますか? ? ? pltとして????.
500ごとに0から99500までの数字順になっていますが、100,000個を超えるものもあるので、すべて6桁に設定したいと思います。
ターゲット: 現在 - plt99500 ターゲット - plt099500
どんな助けでも大変感謝します。
答え1
すべてのファイルが同じディレクトリにあると仮定できる場合、どのファイルも同じ名前を持つことはできません(名前がなく、plt500
すでにplt000500
)。みんな名前にはplt
数字のみが含まれ、で始まるすべてのファイルのplt
名前を変更する必要があります。これにより、次のことができます。
for f in plt*; do
numNoZero=$(sed 's/^0*//' <<<"${f/plt/}")
echo mv -- "$f" "$(printf 'plt%06d' "$numNoZero")";
done
最初に名前がで始まるすべてのファイルとディレクトリを繰り返し(ディレクトリをスキップする必要があるかどうかを教えてください)、次は削除されたファイル名なので、plt
数字でなければなりません。先行ゼロ(存在する場合)を削除し、結果(先行ゼロを持たない数字)をとして保存するコマンドを介してこの結果を提供します。次に、を使用して印刷するように指示し、6桁の数字を印刷します。 ()希望の名前で使用してください。$f
${f/plt/}
plt
sed
$numNoZero
printf
plt
%06d
mv
これが正しいと思われる場合は、削除してやり直してecho
実際にファイル名を変更してください。
または、Perl(Ubuntuや他のDebianシステムなどではPerlと呼ばれるrename
)がある場合は、次のことができます。rename
perl-rename
prename
rename -n 's/plt0*(\d+?)$/sprintf("plt%06d", "$1")/e' plt*
答え2
使用真珠rename
(すべてのオペレーティングシステムで動作):
rename -n 's/\d+/sprintf "%06d", $&/e' ./plt[0-9]*
スイッチの削除-n
、別名。試運転あなたの試みが満足なとき実際の名前に変更。