現在のフォルダ内のすべてのファイル/サブディレクトリの名前を変更するにはどうすればよいですか?
たとえば、スペースを含むファイルとサブディレクトリが多数あり、すべてのスペースをアンダースコアに置き換えたいとします。
File 1
File 2
File 3
Dir 1
Dir 3
名前を変更する必要があります
File_1
File_2
File_3
Dir_1
Dir_3
承認された回答:
サブディレクトリ内のファイルの名前も変更する必要がある場合、およびfind
-execdir
をサポートします 述語、それからあなたはすることができます
find /search/path -depth -name '* *'
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} ;
-depth
を提案してくれた@glennjackmanに感謝します find
のオプション そして私に考えさせるために。
一部のシステム(GNU / Linuxシステムを含む)では、find
名前にスペースが含まれているファイルや、有効な文字を形成しないバイトシーケンスが見つからない場合があります(通常、ロケールとは異なる文字セットでエンコードされた非ASCII文字の名前のメディアファイルの場合)。ロケールをC
に設定する (LC_ALL=C find...
のように )問題に対処します。