• 온라인 도구
  • - 계산기
    • 문자 수
  • - 다운로드
    • TikTok 다운로드
    • DouYin 다운로드
  • - 웹 도구
    • BASE64
    • Base64→이미지
    • 이미지→Base64
    • URL 인코딩
    • JavaScript
    • 타임스탬프
    • 유니코드 변환기
    • JSON 형식
    • 확장자 수정
    • 목록 만들기
    • CSS 최적화
  • - 암호화 도구
    • MD5 암호화
    • 랜덤 생성기
  • - 이미지 도구
    • 이미지 압축
    • QR 코드 생성기
    • QR 코드 리더
    • 배경 화면 미리보기
    • 이미지 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 다운로드 DouYin 다운로드 BASE64 Base64→이미지 이미지→Base64 URL 인코딩 JavaScript 타임스탬프 유니코드 변환기 JSON 형식 확장자 수정 목록 만들기 CSS 최적화 MD5 암호화 랜덤 생성기 이미지 압축 QR 코드 생성기 QR 코드 리더 배경 화면 미리보기 이미지 EXIF 혈액형 유전 의류 사이즈 app.tool_clock
  • 一力が本因坊初防衛
    2024-05-30

    『ボールアンドチェイン』南Q太著 評者:三木那由他【このマンガもすごい!】
    2024-05-30

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

    鎌倉幕府の地頭から海の武士団・松浦党に…古文書群「青方文書」からみる中世の漁業や製塩事情
    2024-06-01

    ポール・オースターの名言「けれどオニオンパイの味は…」【本と名言365】
    2024-06-02

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

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

    フジコ・ヘミングさん偲ぶ魂のピアノ旋律
    2024-06-03

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

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

    「企画展 歌と物語の絵 ―雅やかなやまと絵の世界」(泉屋博古館東京)開幕レポート。歌、物語、絵画が織りなす芸術世界へ
    2024-06-04

    「UESHIMA MUSEUM」が開館。屈指の現代美術コレクションを一般公開
    2024-06-05

    【1971年の今日 : 6月5日】京王プラザホテル全面開業―今からは想像もできない着工前の巨大な貯水池だった頃の写真も
    2024-06-05

    105歳で死去した画家弥勒祐徳さん おごらず、黙々と、ひたすらに神楽など描く
    2024-06-05

    大学入学共通テスト、追試は本試験1週間後 コロナ禍前に戻す 月経痛の配慮明記も
    2024-06-05

    島左近の墓、京都の寺で発掘調査 三成の腹心、関ケ原後も生存?
    2024-06-05

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

    子供と行きたいおすすめ美術館【東京編】。子連れ、親子でアートを楽しもう!
    2024-06-06

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

    パートナーとの強い絆から生まれた、ベンジャミン・ブリテンの代表作【クラシック今日は何の日?】
    2024-06-06

    ©  Dopu Box
    💛