• 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
    • app.tool_clock
  • [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 app.tool_clock
  • 藤井聡太八冠が勝ち、最終局へ 将棋叡王戦で2勝2敗
    2024-05-31

    幸田文の名言「台所に立てば、…」【本と名言365】
    2024-05-30

    “家形埴輪”大集合、総選挙も 「住宅展示場の気分で」、奈良
    2024-06-01

    〈テロ事件と「美の復讐」〉15世紀末・イタリア「メディチ家兄弟暗殺計画」とルネサンスの画家たち
    2024-06-01

    現代詩の「中原中也賞」、俳句で培われた言語感覚…「新たな音やリズム」ジャンルを往来し追求
    2024-06-02

    富士山麓のダイナミックな食材を味わう“奥・山梨”のガストロノミー〈Restaurant SAI 燊〉。
    2024-06-01

    日本の「木」の文化を家具を通して世界へ【ミラノデザインウィーク】
    2024-06-01

    <今週の本棚・次回の予定>6月8日の毎日新聞書評欄は『新装版 ペルーからきた私の娘』ほか
    2024-06-03

    「警察密着24時」担当者ら懲戒 テレビ東京、石川社長は3割返上
    2024-06-03

    万博無料招待、大阪の学校7割が希望 「不参加」の選択肢ない調査手法に批判も
    2024-06-03

    レイモンド・ローウィの名言「優れたインダストリアルデザインは、…」【本と名言365】
    2024-06-04

    福島県沖地震で解体 老舗文具店の新ビルが開店 イベントスペースも
    2024-06-04

    特別展 「工芸的美しさの行方―うつわ・包み・装飾」が東京と京都で開催。日本の美術工芸を世界へ 
    2024-06-04

    2025年春に「直島新美術館」が誕生。既存の活動から新しい価値創造を目指す
    2024-06-04

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

    「君たちはどう生きるか」展 第二部 レイアウト編(三鷹の森ジブリ美術館)レポート。絵を描くことの営為、そして苦悩も見せる
    2024-06-04

    彫刻の森美術館で「舟越桂 森へ行く日」が開催へ
    2024-06-05

    PARCELで「Not Quite」開催。「~でなくもない」作家が集結
    2024-06-04

    「避難いただけるほうが一安心」珠洲で激しい揺れに耐えた仏像、奈良博で縁つなぐ
    2024-06-04

    ビル・エヴァンスの名言「才能なんて取るに足りない」【本と名言365】
    2024-06-05

    ©  Dopu Box
    💛