• Outils en Ligne
  • - Calculatrices
    • Compteur de Caractères
  • - Téléchargement
    • Téléchargement TikTok
    • Téléchargement Douyin
  • - Outils Web
    • BASE64
    • Base64 vers image
    • Image vers Base64
    • Encodage URL
    • JavaScript
    • Timestamp
    • Convertisseur Unicode
    • Formatage JSON
    • Modifier l’Extension
    • Créer une Liste
    • Optimiseur CSS
  • - Outils de Chiffrement
    • Chiffrement MD5
    • Générateur Aléatoire
  • - Outils d’Image
    • Compression d’Images
    • Générateur de QR Code
    • Lecteur de QR Code
    • Prévisualisation de Fond
    • EXIF d’image
  • - Fiches d'information
    • Hérédité du Groupe Sanguin
    • Tailles Vêtements
    • 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

Autres Outils
  • Compteur de Caractères Téléchargement TikTok Téléchargement Douyin BASE64 Base64 vers image Image vers Base64 Encodage URL JavaScript Timestamp Convertisseur Unicode Formatage JSON Modifier l’Extension Créer une Liste Optimiseur CSS Chiffrement MD5 Générateur Aléatoire Compression d’Images Générateur de QR Code Lecteur de QR Code Prévisualisation de Fond EXIF d’image Hérédité du Groupe Sanguin Tailles Vêtements app.tool_clock
  • 民藝・イズ・ビューティフル。 日本文化と黒人文化が融合する「アフロ民藝」とは?
    2024-05-30

    ブームなぜ起きた? 東京国立近代美術館で「ハニワと土偶の近代」展
    2024-05-30

    日テレ、意思疎通できず信頼喪失 「セクシー田中さん」の調査結果
    2024-05-31

    【6月1日~2日】週末必見の“アート&デザイン”まとめ!
    2024-06-01

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

    鳥取・大山でたいまつ行列 夏山開き前夜祭
    2024-06-01

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

    “20世紀音楽”の発展に貢献した指揮者、クーセヴィツキー。その偉業とは【クラシック今日は何の日?】
    2024-06-03

    稀代のピアニスト、マルタ・アルゲリッチの伝説の始まりはこの1曲から【クラシック今日は何の日?】
    2024-06-04

    「ロエベ ファンデーション クラフト プライズ 2024」の大賞が発表。等身大のセラミック彫刻を制作したアンドレス・アンサが受賞
    2024-06-05

    国際博物館の日、今年のテーマは「学びと研究のための博物館」
    2024-06-04

    石川九楊の個展「石川九楊大全」が上野の森美術館で2ヶ月連続開催へ
    2024-06-05

    多摩美術大学がAIやサーキュラーなど5つの最先端のテーマを研究するプラットフォームをスタート
    2024-06-04

    スマイル社が性犯罪被害者支援の法人設立
    2024-06-04

    「再会長江」北京で特別上映 竹内監督のトークイベントも
    2024-06-04

    沙に囲まれた残酷な世界が私たちの社会を浮かび上がらせる。期待の作家が令和の世に送り出す、新たな青春のバイブル!
    2024-06-06

    書評:「日本美術史」を書き換える100年単位の挑戦。『この国(近代日本)の芸術──〈日本美術史〉を脱帝国主義化する』
    2024-06-05

    「Osaka Art & Design 2024」(大阪市内)開幕レポート。何気ない日常のなかで多様なカルチャーに触れる
    2024-06-06

    写真家の吉田ルイ子さん死去
    2024-06-06

    向田邦子の名言「…これが私の料理のお稽古なのです。」【本と名言365】
    2024-06-07

    ©  Dopu Box
    💛