@nullrevolutionのソリューションを拡張する:
find /path_to_files -type f -exec sed --in-place -e 's/\(.*\)/\L\1/g' '{}' \;
この1つのライナーは、ベースディレクトリとして/path_to_filesで始まるすべてのサブディレクトリ内のすべてのファイルを検索します。
警告:これにより、* / path_to_file *の下のすべてのディレクトリにあるすべてのファイルの大文字と小文字が変更されるため、このスクリプトを実行する前に、これを実行する必要があることを確認してください。以下を利用して、ファイル拡張子に基づいて検索の範囲を制限できます。
find /path_to_files -type f -name \*.txt -exec sed --in-place -e 's/\(.*\)/\L\1/g' '{}' \;
元のファイルを変更する前に、元のファイルのバックアップを作成することもできます。
find / path_to_files -type f -name * .txt -exec sed --in-place = -orig -e's /(.*)/\L\1/g''{}' \;
これにより、元のファイル名が残りますが、ファイル名に「_orig」が追加された変更されていないコピーが作成されます(つまり、file.txtはfile.txt-origになります)。
各作品の説明:
find /path_to_file
これにより、ベースディレクトリが指定されたパスに設定されます。
-type f
これにより、ディレクトリ階層でファイルのみが検索されます。
-exec COMMAND '{}' \;
これにより、一致したファイルごとに、指定されたコマンドが1回実行されます。は'{}'
現在のファイル名に置き換えられます。はコマンドの\;
終了を示します。
sed --in-place -e 's/\(.*\)/\L\1/g'
は--in-place
、ファイルをバックアップせずにファイルへのcnagesを作成します。正規表現は、後方参照を使用\1
して行全体を参照し、\L
を小文字に変換します。
オプション
(より古風な解決策のために。)
find /path_to_files -type f -exec dd if='{}' of='{}'-lc conv=lcase \;