bashに含まれるすべてのファイル名から「;」を削除するには、ファイル名を変更します。

bashに含まれるすべてのファイル名から「;」を削除するには、ファイル名を変更します。

ファイル名の文字セットを変更する方法を知っています。例えば

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-renameprename

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

関連情報