特定の日付タイムスタンプを含む動的ファイル拡張子を固定ファイル拡張子に置き換える必要があります。
例えば、
08242016G0040156.ZIP.20160907141452
09042016SHOC0003.ZIP.20160904044504
08242016G0040156.ZIP
それぞれとに置き換える必要があります09042016SHOC0003.ZIP
。
答え1
文字列操作を含む単純なループであるbashを使用して
for f in ./*.ZIP.*
do
mv "$f" "${f%.*}"
done
"${f%.*}"
.
文字列から以降のすべての項目(最後の項目を含む)を削除します$f
。
答え2
for filename in $(find . -name '*ZIP*'); do mv $filename $(echo $filename | sed 's|\(.*\)\.ZIP.*|\1.ZIP|g') ; done
答え3
perl
デフォルトのコマンドを使用してくださいrename
。
$ touch 08242016G0040156.ZIP.20160907141452 09042016SHOC0003.ZIP.20160904044504
$ rename -n 's/\.\d+$//' *ZIP*
rename(08242016G0040156.ZIP.20160907141452, 08242016G0040156.ZIP)
rename(09042016SHOC0003.ZIP.20160904044504, 09042016SHOC0003.ZIP)
-n
テスト実行オプション。名前の変更が問題ない場合は、実際の名前を変更するために削除してください。
ファイルが複数のサブディレクトリにある可能性がある場合は、以下を使用してください。find
find -name '*ZIP*' -exec rename -n 's/\.\d+$//' {} +
.
最後の使用以降に数字以外の文字がある場合
rename -n 's/\.[^.]+$//' *ZIP*