Unixが番号順にリストされるようにファイル名を入力します。

Unixが番号順にリストされるようにファイル名を入力します。

次の形式の複数のファイルを含むフォルダがあります。

C Block Scan copy 1.pdf
C Block Scan copy 2.pdf
C Block Scan copy 3.pdf
C Block Scan copy 4.pdf
.
.
.

ls私が持っている問題の1つは、Unixを実行するときにそれらを次のようにリストすることです。

C Block Scan copy 1.pdf
C Block Scan copy 10.pdf
C Block Scan copy 11.pdf
C Block Scan copy 12.pdf
.
.
.

Unixが(希望的に)順番にリストできるように数字を埋めたいと思います。

C Block Scan copy 01.pdf
C Block Scan copy 02.pdf
C Block Scan copy 03.pdf
.
.
.
C Block Scan copy 09.pdf
C Block Scan copy 10.pdf
C Block Scan copy 11.pdf
C Block Scan copy 12.pdf
.
.
.

同様の問題がある投稿を見つけましたファイル名の数字を固定長でパッドしかし、私の状況に彼らのソリューションを適用しようとしましたが、正常に動作しませんでした。私が試したことは次のとおりです。

for f in *.pdf; do
    int=`basename $f .pdf | cut -d '.' -f 2`
    new_name=`printf "file.%0.2i.pdf\n” $int`
    [ ! -f $new_name ] && mv $f $new_name
done

私はこれが私の状況に対する彼らの解決策を盲目的に適用したことを認めています。私は基本的な構文を実際に理解しておらず、StackExchangeで投稿にコメントするのに十分なランクを取らないので、気にしません。

私はシェルスクリプトに初めて触れたので、構文の意味の説明が役に立ちます。

役に立つ場合は、macOS Mojave 10.14.6を使用しており、Brewがインストールされています。

よろしくお願いします。

ベストアンサー1

使用zsh(現在のmacOSのデフォルトユーザーシェル):

autoload zmv # best in ~/.zshrc
zmv '(* )([0-9].pdf)' '${1}0$2'

おすすめ記事