GNU/Linux >> Linux の 問題 >  >> Linux

現在のディレクトリのすべてのファイル名で1つの文字を別の文字に置き換える方法は?

現在のフォルダ内のすべてのファイル/サブディレクトリの名前を変更するにはどうすればよいですか?

たとえば、スペースを含むファイルとサブディレクトリが多数あり、すべてのスペースをアンダースコアに置き換えたいとします。

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...のように )問題に対処します。


Linux
  1. ソフトウェアに関連するすべてのファイルを見つける方法は?

  2. Linuxコマンドラインのすべてのファイルで単語のすべての出現箇所を置き換える方法

  3. Linuxで777権限を持つすべてのファイル/フォルダを見つける方法は?

  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linux ですべてのスパース ファイルを見つける方法

  3. X よりも古いすべてのファイルを含むディレクトリを検索しますか?

  1. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  2. すべてのファイル(非表示を含む)をあるディレクトリから別のディレクトリに移動するにはどうすればよいですか?

  3. すべてのファイルとディレクトリを再帰的に一覧表示する方法