-2

次のような名前のファイルがいくつかあります。

abc21pqr.txt
abc22pqr.txt
abc23pqr.txt

などなど

abc1000pqr.txt

「abc」と「pqr」の間の番号を取得し、その番号に 10 を追加して、ファイルの名前を変更します。

したがって、出力ファイル名は次のようになります。

abc31pqr.txt
abc32pqr.txt
abc33pqr.txt

などなど

abc1010pqr.txt

Unix ワンライナーを使用してこれを行うにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

GNU Bashの場合、番号の前後の文字列が固定され、すべてのファイルが現在のディレクトリにあると仮定します。

find -maxdepth 1 -type f -name 'abc[0-9]*pqr.txt' |
    sed 's|^./abc||; s|pqr\.txt$||' |
    sort -nr |
    while read src; do
       mv abc${src}pqr.txt abc$((src+10))pqr.txt
    done
于 2012-10-10T09:35:46.340 に答える