ディレクトリ内のすべてのファイル名から「_」を削除する方法

ディレクトリ内のすべてのファイル名から「_」を削除する方法

Bashに_

私はそれを含むすべてのファイルでプレフィックスを使用するか、rename単にmv削除できると確信しています。_

私は試みる:

for file; do
    mv "$file" "${file//_/}"
done

しかし、これは私が望む効果を得ることができませんでした。_すべてのファイルからプレフィックスを削除するには、どのコマンドを使用できますか?

ベストアンサー1

1)for file; doスクリプトのコマンドラインパラメータであるループ位置パラメータです。for file in *; doディレクトリ内のファイルを繰り返すために使用されます(またはアンダー_*スコアが前に付いたファイルのみを取得します)。

2)ファイル名の先頭の下線を削除する${file#_}代わりに使用できます。特に最初からセクションを削除しました。これは標準機能であり、もちろん削除されます。${file//_/}${par#word}${par/pat/repl}${file//_}みんな最初のスラッシュだけでなく、スラッシュ(二重スラッシュを使用したため)。

3)少なくともLinux(GNU Userland)とFreeBSDでは、mv -nこれを使用してファイルを上書きしないように要求できます。もしかして。

だから、

for file in _*; do
    mv -n -- "$file" "${file#_}"
done

おすすめ記事