Linux Mintローカルフォルダ内のすべてのファイルにサフィックスを追加するには?

Linux Mintローカルフォルダ内のすべてのファイルにサフィックスを追加するには?

私はこれを試しました:

#!/bin/bash
# addsuffix <suffix> <files>

suffix=$1
shift
for f in "$@"
do
  extension=${f##*.}
  if [ -z $extension ]; then
    mv "$f" "$f$suffix"
  else
    mv "$f" "${f%.$extension}$suffix.$extension"
  fi
done

add_suffixが古いファイルの名前であるこのコマンドで

sh add_suffix

しかし、エラーが発生します。

add_suffix: 5: shift: can't shift that many

何が問題なの?

ベストアンサー1

私はシェルスクリプトで何が間違っているのかについての記事の最後の質問ではなく、スレッドの質問に答えています。

シェルスクリプトの外部でこれを行う場合は、mmvコマンドを使用してください。

me@elman:~/test$ ls
file1  file1.out  file2
me@elman:~/test$ mmv -n "*" "#1.newsuffix"
file1 -> file1.newsuffix
file1.out -> file1.out.newsuffix
file2 -> file2.newsuffix

'-n'はmmvに実行するアクションを示しますが、実際には実行しないように指示します(模擬実行)。 2番目のパラメータ( "*")は、mmvに変更するファイル(ソース)を知らせます。より複雑な一致パターンがあるかもしれませんが、このコマンドはディレクトリから隠されていないすべてのファイルをインポートする必要があります。最後のパラメータ「#1.newsuffix」(ターゲット)では、#1はソース仕様の最初のワイルドカード一致を参照し、それを新しい名前にコピーします。

実際に変更するには、「-n」を削除します。マニュアルページはとても素晴らしいです。

おすすめ記事