• Online Tools
  • - Calculators
    • Character Count
  • - Download
    • TikTok Download
    • DouYin Download
  • - Web Tools
    • BASE64
    • Base64 to Image
    • Image to Base64
    • URL Encoding
    • JavaScript
    • Timestamp
    • Unicode Converter
    • JSON Format
    • Modify Extension
    • Make List
    • CSS Optimizer
  • - Encryption Tools
    • MD5 Encryption
    • Random Generator
  • - Image Tools
    • Image Compression
    • QR Code Generator
    • QR Code Reader
    • Wallpaper Preview
    • Image EXIF
  • - Info Sheets
    • Blood Type Heredity
    • Clothing Sizes
  • [email protected]
DopuBox
  • English
  • Español
  • Français
  • 日本語
  • 한국어
  • 简体中文
  • 繁體中文
全部 ニュース Meta Code 文化・アート
Linux renameコマンドの一括名前変更方法
2021-12-17

Linuxのrenameコマンドには2つのバージョンがあります。1つはC言語バージョンで、1つはPerl言語バージョンで、初期のLinuxリリース版は基本的にC言語バージョンを使用していましたが、今ではC言語バージョンを見るのは難しいです。歴史的な理由で、Perl言語が赤くなったとき、Linuxのツール開発者たちはPerlがCに取って代わることができると信じていました。そのため、ほとんどのツールはもともとCバージョンだったがPerlに書き換えられた。Perlバージョンのサポートは正規処理であるため、機能がより強く、C言語バージョンはもう必要ない。

システム内のrenameコマンドがどのバージョンであるかをどのように区別しますか?

man renameを入力して最初の行が表示されます。

RENAME(1) Linux Programmer’s Manual RENAME(1)

では、これがC言語バージョンです。

次のように表示されます。

RENAME(1)    Perl Programmers Reference Guide    RENAME(1)

これがPerlバージョンです!

2つのバージョンの構文の違い:

C言語の、manの上の注釈に従って、

renameの構文フォーマットは次のとおりです。

rename fromtofile

このコマンドには3つのパラメータがあります。from:名前を変更します。to:名前を変更します。fileで変更する必要があるファイルはどれですか。

使用例:

例えば、logで始まるファイルがあります。log 001.txt,  log002.txt ……. log 100までtxt

今、このファイルのロゴをすべてhistoryに置き換えたいです。

rename  log history log*

このコマンドの意味はよくわかりました。logで始まるすべてのファイルのlog文字をhistoryに置き換えます。

このように置換ファイルはhistory 001である.txt,  history002.txt ….. history 100までtxt

rename C言語バージョンのもう一つのman例は、接尾辞名を一括変更することです。

たとえば、jpegのすべての接尾辞画像ファイルをjpgファイルに変更します。

rename .jpeg.jpg*.jpeg

このようにして、すべて.jpeg拡張の接尾辞名はすべて.jpg

ここで、rename C言語バージョンで実現できる機能をまとめます。ファイル名を一括変更すると、各ファイルが同じ文字列で置き換えられます。つまり、ループなどを実装して番号で名前を変更することはできません!

Perlバージョンのバッチ名の変更は、Perlのメリットとして、正規表現を使用して奇抜な機能を完成させることができます。

perlバージョンのパラメータフォーマット:

rename  perlexprfiles

perlバージョンのrenameには2つのパラメータしかありません。最初のパラメータはperl正規表現で、2番目のパラメータは処理するファイルです。

man renameのヘルプ例:

1)ファイルがあります。bakは終わり、今これらを考えています。bakは全部取り除く。

rename     's/\.bak$//'       *.bak

このコマンドは簡単です。私はまだperlを勉強したことがありません。perlに文字列を置き換えるのがそうなのか分かりませんが、sedはそうしています。だから、sedやtrの基礎があれば、分かりやすいです。この置き換えはsedの正則文法とそっくりです。

2)すべてのファイル名に大文字が含まれているものを小文字に変更します。

rename      'y/A-Z/a-z/'      *

依然としてsedの置換文法と同じで、多く解釈する必要はなくて、もし読めないならば、系統的にsedを学ぶことができます。

いくつかの実用的な例があります。

ファイル名のスペースを一括削除
Linuxファイル名はもともとスペースがサポートされていません。いつ許可されたか分かりません。もちろん、コマンドラインでファイルを呼び出すとき、スペースには問題があります。例えば、mv oldfile newfileを直接使用することができますが、スペースがあるとだめです。二重引用符を付けなければなりません。mv「oldfile」「newfile」または反スラッシュで[]を移動しなければなりません。これでいいです。しかし、スペースを含む画像名を直接Latexドキュメントに導入すると、Latexがpdfを生成するときに直接ファイル名が印刷されます。この前、この問題に悩んでいましたが、私が生成したpdfはどうしていつもファイル名が現れますか。その後、ファイル名にスペースが含まれていた問題に気づきました!Windowsシステムの下で生成されたファイル名は生まれつきスペースが含まれており、嫌だが、HPスキャナーで生成された画像の中にはデフォルトでスペースが入っているものもあり、仕方なく彼を削除するしかなく、システムがrenameコマンドを研究する前に、私はmvでスペースを除去した。

コードのコピー

find . -type f -name "* *" -print |

while read name; do

na=$(echo $name | tr ' ' '_')
if [[ $name != $na ]]; then

mv "$name" $na

fi

done

このバージョンは以前私がずっと使っていたので、どのネット上で検索したのか分かりませんが、tr/sed/awkコマンドを系統的に勉強したことはありません。

注釈して、よく理解して、find.type f-name"**"-printという文は、現在のディレクトリの下にあるすべてのタイプの普通のファイルを検索し、名前の中にスペースが含まれているファイルを印刷します。findのデフォルトは印刷されたこの-printが余分になって、パイプを通じてwhileに転送され、ファイル名はname変数に配置され、trコマンドでスペースを下線に置き換えます。次に、実行後の名前が異なる場合はmvコマンドを使用して名前を変更すると判断します。しかし、findがすべてのファイル名にスペースが含まれていることをクエリーしたため、このifは有無を判断します。trコマンドを使用すると、$na変数は$name変数に等しくないに違いありません。

このコードは簡略化できます

コードのコピー

find . -type f -name "* *" |

while read name; do

na=$(echo $name | tr ' ' '_')

mv "$name" "$na" 

done

trはsedの簡略バージョンであるように見え、trはスペースを下線で置き換えます。

もう1つはsedバージョンの実装です。

for f in *;do mv "$f" `echo "$f" | sed 's/[ ]\+/_/g' `; done

ここでsed式は、次のように書くこともできます。

sed 's/[[:space:]]\+/_/g'

しかし、sedに1回または複数回現れるプラス記号は、反スラッシュを追加する必要があることを覚えておいてください。すなわち+
これでいいです。

まあ、この2つの方法はあまりにもうるさいので、renameの実現を見てみましょう。

rename      's/[ ]+/_/g'       *

OKは簡単です。


ソース元URL:https://dopubox.com/article/p/afd16bc62f861b94

Other Tools
  • Character Count TikTok Download DouYin Download BASE64 Base64 to Image Image to Base64 URL Encoding JavaScript Timestamp Unicode Converter JSON Format Modify Extension Make List CSS Optimizer MD5 Encryption Random Generator Image Compression QR Code Generator QR Code Reader Wallpaper Preview Image EXIF Blood Type Heredity Clothing Sizes
  • 歯科医師の技術で愛好家も納得するサウナを細部まで再現するミニチュア作家
    2024-05-30

    「韓国版純烈」K4の「アダルトKポップ」 日本デビュー曲USEN1位も獲得 コアな追っかけも
    2024-05-30

    社長「関係者や視聴者不安にさせた」と謝罪
    2024-05-30

    将棋叡王戦、藤井が勝ち最終局へ
    2024-05-30

    森トラストが平安女学院から有栖川宮旧邸を取得…今度の活用は京都市とも引き続き協議
    2024-06-01

    ビルケンシュトック、創業から250年の歴史を振り返る2冊を出版
    2024-06-01

    峰不二子役の増山江威子さん死去 声優、艶ある声でルパン翻弄
    2024-06-03

    テレ東が警察密着番組の担当者らを懲戒処分
    2024-06-03

    ニコライ・バーグマンが手がける北欧のジュエリーブランド〈フローラダニカ〉旗艦店が南青山にオープン。
    2024-06-03

    アルテミス計画&天の川銀河! 大人も学んで楽しめる「大人レゴ」最新ラインナップは”宇宙”がテーマ!
    2024-06-03

    現代美術作家の杉本博司がYouTubeチャンネル開設 素顔に迫る映像を公開
    2024-06-04

    「2億円トイレ」のイメージ図など公開 大阪・関西万博
    2024-06-04

    知ってる? 「登録博物館等マーク」
    2024-06-05

    アートフェア東京、次回は2025年3月に開催決定
    2024-06-04

    今週末に見たい展覧会ベスト12。山武市百年後芸術祭、版画の青春、北斎に三島喜美代まで
    2024-06-04

    クールべ《世界の起源》はなぜ攻撃されたのか? ポンピドゥー・センター・メッスで破壊・盗難事件
    2024-06-04

    週末見たい展覧会5選。今週はTRIO展、吉田克朗展、建築の構造デザインに焦点を当てた展覧会など。【2024年6月第2週】
    2024-06-05

    田名網敬一が新作の巨大インスタレーションを発表へ。世界初の大規模回顧展「田名網敬一 記憶の冒険」
    2024-06-06

    宗教2世のドラマが受賞 第50回放送文化基金賞
    2024-06-06

    佐渡金山「情報照会」と勧告 世界遺産登録に可能性残す
    2024-06-06

    ©  Dopu Box
    💛