Bashスクリプトで複数のファイルの名前を変更するには? [閉鎖]

Bashスクリプトで複数のファイルの名前を変更するには? [閉鎖]

同じディレクトリにある3つのファイル名を変更したいとしましょう。例: test1.gzip test2.gzip test3.gzip

さて、上記のすべてのファイル名を次のように変更したいと思います。

テスト1_20180518.gzipテスト2_20180518.gzipテスト3_20180518.gzip

今結果をどのように取得できますか?誰か助けてください! !

bashスクリプトでこれを行う方法を教えてください。

答え1

「名前が変更された」バージョンを確認してくださいrename -V。あなたが見るなら:

  • " util-linux"それから

    rename .gzip _$(date "+%Y%m%d").gzip *.gzip
    
  • " File::Rename"それから

    rename 'chomp(my $date = `date "+%Y%m%d"`); s/\.gzip/_$date.gzip/' *.gzip
    

答え2

考えられる解決策(ループ本文で1つを選択する必要があります):

#!/bin/bash

pattern="pattern"
i=0

for file in `find <your_path> -type f -name '*.zip'`
do
    extension="${file##*.}"
    filename="${file%.*}"

    # without extenstion
    mv "$file" "$filename-$pattern.$extension"

    # whole filename
    mv "$file" "$pattern-$i"
    i=$((i + 1))
done

関連情報