などのファイルを含むフォルダがあります/User/me/Desktop/folder/images
。私のウェブサイトにインポートすると、ファイルが誤ってソートされ、文字の優先順位によるソートではないように見える配列が表示されます。したがって、順序が正しくなるように、3桁ではなくすべての画像名をゼロで埋められた3桁の対応する名前に変更したいと思います。 Mac端末の1行にファイルがいっぱいのフォルダでこれを行うにはどうすればよいですか?key 1--name.jpg
key 10--name1.jpg
key 84--name.jpg -> key 9--name.jpg -> key 94--name.jpg
key 9--name.jpg -> key 84--name.jpg -> key 94--name.jpg
9, 12, 99
009, 012, 099
ベストアンサー1
たとえば、数値を抽出します。
$ echo 'key 88--name.jpg' | sed 's/key \([0-9]\+\)--.*/\1/'
88
printf を使用してフォーマットします。
$ printf '%04d' "88"
0088
名前に再度挿入します。
$ echo 'key 88--name.jpg' | sed 's/\(key [0-9]\+--\)/key 0088--/'
key 0088--name.jpg
1つのスクリプトですべて:
#!/bin/sh
for f in 'key '*'--name.jpg'; do
a="$( echo "$f" | sed 's/key \([0-9]\+\)--.*/\1/' )"
b="$( printf '%04d' "$a" )"
c="$( echo "$f" | sed 's/\(key '"$a"'--\)/key '"$b"'--/' )"
echo \
mv -i "$f" "$c"
done
またはより速く:
#!/bin/sh
for f in 'key '*'--name.jpg'; do
a="${f#key }"
a="${a%--name.jpg}"
b="$( printf 'key %04d--name.jpg' "$a" )"
echo \
mv -i "$f" "$b"
done
両方のスクリプトいいえ何でも変えてください。変更される内容のみが一覧表示されます。表示された内容が気に入ったら、その行をコメントアウトしてください(前に#を追加)echo \
。それにもかかわらず、mvコマンドはファイルがすでに存在する場合、ファイルを上書きしません(-iオプション)。