web-dev-qa-db-ja.com

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

サブディレクトリ内のファイルの名前をバッチで変更する方法はありますか?

例えば:

ディレクトリとサブディレクトリがあるフォルダ内の*.htmlの名前を*.htmに変更します。

39
Shoban

Windowsコマンドプロンプト:(バッチファイル内の場合、%xを%% xに変更します)

for /r %x in (*.html) do ren "%x" *.htm

これは、ファイルの中央の名前を変更する場合にも機能します

for /r %x in (website*.html) do ren "%x" site*.htm
74
Anonymous

Windowsの場合、これは私が見つけた最高のツールです。

http://www.1-4a.com/rename/

それは何でもでき、それに台所の流しがあります。

Linuxの場合、以前の回答のように、スクリプト言語とシェルが豊富に用意されています。

8
moogs
find . -regex ".*html$" | while read line;
 do 
    A=`basename ${line} | sed 's/html$/htm/g'`;
    B=`dirname ${line}`;
    mv ${line} "${B}/${A}";
 done
6
Aditya Mukherji

Pythonで

import os

target_dir = "."

for path, dirs, files in os.walk(target_dir):
    for file in files:
        filename, ext = os.path.splitext(file)
        new_file = filename + ".htm"

        if ext == '.html':
            old_filepath = os.path.join(path, file)
            new_filepath = os.path.join(path, new_file)
            os.rename(old_filepath, new_filepath)
5
monkut

Bashでは、次のことができます。

for x in $(find . -name \*.html); do
  mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done
3
Adam Rosenfield

もっとエレガントな方法があると確信していますが、ここに私の頭に浮かんだ最初のものがあります:

for f in $(find . -type f -name '*.html'); do 
    mv $f $(echo "$f" | sed 's/html$/htm/')
done
2
albertb

Forfiles(Windows XP and 2003以降のものと思われます)が付属している場合)を実行できます:

forfiles/S/M * .HTM/C "cmd/c ren @file * .HTML"

2
BBX

Total Commander これはファイルマネージャーアプリであり、ディレクトリとサブディレクトリ内のすべてのファイルを一覧表示および選択できます。その後、それらに対して任意のトータルコマンダー操作を実行できます。それらの1つは、選択したファイルの名前を複数変更します。

1
nightryde

Linuxでは、「 rename 」コマンドを使用して、バッチでファイルの名前を変更できます。

1
ayaz

Windowsの場合、正規表現ベースの名前変更とドラッグアンドドロップのサポートにより、 便利なlitte VBScriptソリューション を作成しました。必要に応じて試してみてください-vbsファイルに入れて、エクスプローラーでフォルダーをドロップします。

0
Tomalak

Unixでは、 rnm を使用できます。

rnm -rs '/\.html$/.htm/' -fo -dp -1 *

または

rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *

説明:

  1. -ns:名前文字列(新しい名前)。 /n/は、拡張子なしのファイル名に展開される名前文字列規則です。
  2. -ss:検索文字列(正規表現)。一致するファイルを検索します。
  3. -rs/search_regex/replace_part/modifier形式の文字列を置き換えます
  4. -fo:ファイルのみのモード
  5. -dp:ディレクトリの深さ(-1は無制限を意味します)。
0
Jahid

Windowsでは、オープンソースのシンプルなC#bulk file renamerアプリケーションをhttps:// filerenamer.codeplex.comは、単純なExcelファイルで動作します。このアプリケーションに2列のソースと宛先を含むExcelファイルを提供すれば完了です。

Windowsの場合、 The Rename はかなり良い仕事をします。フリーウェアですが、オープンソースではありません。

0
lImbus

Linux上のAWK。最初のディレクトリの場合、これはあなたの答えです... dir_pathでawkを再帰的に呼び出すことにより、おそらくこのawkを以下に記述する別のawkを書くことによって外挿します...など。

ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh
0
Alex