ファイル名の文字セットを変更する方法を知っています。例えば
for i in *example_text* ;
do
mv "$i" "`echo $i | sed 's/example_text//'`"
done
ファイル名の一部が「;」の場合はどうすればよいですか? (引用符の間)。実行しようとするたびにエラーが発生します。
for i in *;* ;
do
mv "$i" "`echo $i | sed 's/;//'`"
done
どのようなヒントがありますか?
答え1
mv
ループで使用できますが、代わりにPerlを使用することをお勧めします(オペレーティングシステムに応じてまたはとしてrename
インストールできます)。これはあなたの目的に合わせて特別に設計されたツールであり、あなたのシステムにすでにインストールされている可能性が高いです。perl-rename
prename
rename 's/;//g' ./*
これで
、テスト実行が実行するアクションを最初に確認できます。rename -v -n 's/;//g' ./*
答え2
シェルの特殊文字であるセミコロンを避けてください。
for i in *\;*
# or
for i in *';'*
を使用すると、bash
引数拡張がシェルよりはるかに高速になりますsed
。
for f in *';'* ; do
mv -- "$f" "${f//;/}"
done
ファイルがすでに存在する場合は上書きできます。使用またはmv -n
存在することを確認してくださいtest -e
。