というタイトルのファイルがたくさんあるディレクトリがあります(たとえば)
how it is: how it should be:
945TITLE-1.txt 945TITLE-00.txt
945TITLE-10.txt 945TITLE-01.txt
945TITLE-2.txt 945TITLE-02.txt
945TITLE-23.txt 945TITLE-03.txt
945TITLE-3.txt 945TITLE-10.txt
945TITLE.txt 945TITLE-23.txt
ダッシュ文字に続く数字とテキストは変更される可能性があるため、可変にする必要があります。番号のないファイル (この例では 945TITLE.txt) を無視して、次の行を使用して、ダッシュと 1 桁で終わるすべてのファイルを取得しています。
file=`ls -1 working/pages/files | grep [-][0-9].txt`
しかし、ダッシュと数字の間の 0 をスプライスする方法がわかりません。
for file in $filelist
do
????
done
何度か試みた後、私はこれでさらに進んだ:
for file in working/pages/files/$filelist
do
f1=${filelist%%[-]*}
f2=${filelist##*[-]}
finalName=${f1}-0${f2}
echo $finalName
mv $file working/pages/files/$finalName
done
の出力$finalName
は945TITLE-03.txt
毎回であり、mv
コマンドをにのみ適用し945TITLE-1.txt
(誤ってに変更し945TITLE-03.txt
ます)、他のファイルが見つからないと言います(working/pages/files/
最初のファイルのフォルダーのみを検索したため)
どんな助けでも大歓迎です.私は決してこの解決策と結婚していません. ありがとうございました