• 在线工具
  • - 计算器
    • 字符计数
  • - 下载
    • TikTok 下载
    • 抖音下载
  • - 网络工具
    • BASE64
    • Base64 转图片
    • 图片转 Base64
    • URL 编码
    • JavaScript
    • 时间戳
    • Unicode 转换器
    • JSON 格式化
    • 修改扩展名
    • 制作列表
    • CSS 优化器
  • - 加密工具
    • MD5 加密
    • 随机生成器
  • - 图像工具
    • 图像压缩
    • 二维码生成器
    • 二维码识别器
    • 壁纸预览
    • 图片 EXIF
  • - 信息表
    • 血型遗传
    • 服装尺码
    • 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

其他工具
  • 字符计数 TikTok 下载 抖音下载 BASE64 Base64 转图片 图片转 Base64 URL 编码 JavaScript 时间戳 Unicode 转换器 JSON 格式化 修改扩展名 制作列表 CSS 优化器 MD5 加密 随机生成器 图像压缩 二维码生成器 二维码识别器 壁纸预览 图片 EXIF 血型遗传 服装尺码 app.tool_clock
  • MURAKAMI × Liquem 夢のコラボアクセが再登場☆|長山智美 デザイン狩人
    2024-05-30

    民藝・イズ・ビューティフル。 日本文化と黒人文化が融合する「アフロ民藝」とは?
    2024-05-30

    小学館も来週に報告書公表
    2024-05-31

    「ねこクラゲ」被告、脱税認める 原稿優先で申告せず、福岡地裁
    2024-05-31

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

    芸術レベルのグッズも登場! パリ・東京・大阪の名コレクションが集まる「TRIO展」
    2024-06-01

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

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

    「国芳の団扇絵 猫と歌舞伎とチャキチャキ娘」(太田記念美術館)開幕レポート。世界初の展覧会
    2024-06-04

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

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

    東京都写真美術館で「今森光彦 にっぽんの里山」が開催へ
    2024-06-04

    「犬派?猫派?」(山種美術館)開幕レポート。初公開から名作まで勢揃い
    2024-06-04

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

    謎多き家形埴輪 「考古学の空白」に挑む橿考研ベテラン研究員、念願の特別展開催中
    2024-06-04

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

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

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

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

    今週末に見たい展覧会ベスト8。閉幕の横浜トリエンナーレから、「梅津庸一 クリスタルパレス」、石川九楊の2ヶ月連続個展まで
    2024-06-06

    ©  Dopu Box
    💛