私のフォルダに多くのファイルがあり、プレフィックスまたはサフィックスを追加したいです(両方)与えてください。確認しましたここ使えることがわかりました
for filename in *.jpg; do mv "$filename" "prefix_$filename"; done;
で終わるすべてのファイルにプレフィックスを追加します.jpg
(削除すると、.jpg
現在のフォルダ内のすべてのファイルにプレフィックスが追加されます)。
しかし、私はできることを願っています
- サフィックスを追加します(例:
filename.ext
に名前を変更するなどfilename.whatever.ext
)。 - プレフィックスまたはサフィックスがすでに存在していることを確認してスキップします。
addprefix whatever *.ext
または、同じパラメータを受け入れるエイリアスを作成します。addsufix whatever *.*
答え1
使用している場合は、bash
この1行のコードで操作を実行できます(変数があり、$prefix
簡単に使用できる$suffix
と仮定)。$extension
mv "$filename" "$prefix${filename%.$extension}$suffix.$extension"
スクリプトを作成できます
#!/bin/bash
# Usage: addprefix <prefix> <files>
prefix=$1
shift
for f in "$@"
do
mv "$f" "$prefix$f"
done
そして
#!/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
答え2
一つあるPerlrename
コマンドこれだけで十分です。しかし注意してください。というさまざまなコマンドがあるので、引数としてaを必要とするPerlスクリプトがrename
あることを確認してください。perlexpr
これはDebianおよびその派生製品(Ubuntu、Mintなど)のパッケージによって提供されるコマンドですが、rename
他のユーティリティ名を持つ可能性がある他のディストリビューションでは提供されません。perl
rename
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
ご覧のとおりです。等級- 複数回呼び出してもプレフィックスは再追加されません。
文字列の(長さ0の)先頭(^
)を置き換えるか、prefix
開始部分の後にオプションの文字列を置き換える方法で機能しますprefix
。
私はこれを練習用にシェルスクリプトまたはシェル関数でパッケージ化します。 :)
しかし、Postfixは、ファイル名のどの部分が拡張子を構成しているかを知る必要があるため、少し難しいです。
答え3
そしてzsh
:
autoload zmv # in ~/.zshrc
zmv '(*~*suffix).ext' '${1}suffix.ext'
~
ワイルドカードとは、次のことを意味します。とは別に存在するzsh
。
答え4
現在のフォルダにあるすべての画像のプレフィックスと拡張子を変更する簡単な例です。
prefix=EG_
extension=.jpg
for i in $(ls); do mv $i "$prefix${i%.JPG}$extension"; done
変更する前にデータにどのような影響があるかを確認するにはMV渡すエコ
IMG_7993.JPGの出力はEG_IMG_7993.jpgです。