Windowsでファイルの名前をすばやく変更する方法の1つは
F2 > Rename > Tab (to next file) > Rename ...
しかし、Ubuntu / Nautilusでは、次のファイルに移動できません。しかし、Linux上では、コマンドラインの代替手段が必要だと思います。
ただし、特定のファイルの名前を変更する方法をより詳細に制御したい場合があります。その場合、おそらく次のファイルにタブで移動できる方が良いでしょう
Windowsでファイルの名前をすばやく変更する方法の1つは
F2 > Rename > Tab (to next file) > Rename ...
しかし、Ubuntu / Nautilusでは、次のファイルに移動できません。しかし、Linux上では、コマンドラインの代替手段が必要だと思います。
ただし、特定のファイルの名前を変更する方法をより詳細に制御したい場合があります。その場合、おそらく次のファイルにタブで移動できる方が良いでしょう
回答:
私はrename
いつも使っています。それはかなり単純ですが、できれば基本的な正規表現を知っていることを願っています:
rename "s/SEARCH/REPLACE/g" *
これSEARCH
によりREPLACE
、すべてのファイルで文字列が置き換えられます(つまり、*
)。/g
あなたが持っていたので、もしグローバルな手段は、SEARCH_SEARCH.jpg
それは名前を変更されるだろうREPLACE_REPLACE.jpg
。持っていなかった場合/g
、置換は一度しか行われなかったため、という名前になりREPLACE_SEARCH.jpg
ます。大文字と小文字を区別しない場合は、追加します/i
(つまり、/gi
または/ig
最後に追加します)。
正規表現を使用すると、さらに多くのことができます。
これは完全なPerl正規表現をサポートrename
するprename
(Perl とも呼ばれるrename
)コマンドであることに注意してください。rename
パターンを使用する別の方法があり、それほど強力ではありません。prename
以前はUbuntuにデフォルトで(Perlと一緒に)インストールされていましたが、現在は次のようにする必要があります。
sudo apt install rename
以下に例を示します。
追加:
rename 's/^/MyPrefix_/' *
document.pdf
に改名 MyPrefix_document.pdf
削除:
また、不要な文字列を削除することもできます。likeという名前の20個のMP3ファイルがCD RIP 01 Song.mp3
あり、「CD RIP」部分を削除し、1つのコマンドでそれらすべてを削除したいとします。
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
に 01 Song.mp3
の余分なスペースに注意してください。スペースが'^CD RIP '
ないと、すべてのファイルにはファイルの最初の文字としてスペースがあります。また、これは^
文字なしCD RIP
でも機能しますが、ファイル名のどの部分でも一致します。^
彼らは、ファイルの先頭にある場合の保証はそれが唯一の文字を削除します。
追加:
rename 's/$/_MySuffix/' *
document.pdf
に改名 document.pdf_MySuffix
変更:
rename 's/\.pdf$/.doc/' *
変更されますSomething.pdf
にSomething.doc
。(バックスラッシュがある理由は、.
その正規表現ではワイルドカード文字です.pdf
マッチがqPDF
一方\.pdf
だけ正確な文字列に一致する.pdf
。また、非常に重要な注意することは、あなたがBASHに精通していない場合、あなたはあなたが引用符を省略しないかもしれない!単一引用符にバックスラッシュを置く必要がありますまたは、二重引用符を使用するか、bashはそれらを翻訳しようとします。bash \.
と "\."
equalsには.
(ただし、二重引用符とバックスラッシュが使用されます。たとえば、改行には「\ n」が使用されますが"\."
、有効なバックエスケープシーケンスではないため、に変換されます.
)
実際、文字列の一部を全体ではなく引用符で囲むこともできます。これ's/Search/Replace/g'
はs/'Search'/'Replace'/g
and s/Search/Replace/g
とBASH と同じです。特殊文字(およびスペース)に注意する必要があります。
-n
正しい正規表現を持っていることに自信がない場合は、このオプションを使用することをお勧めします。名前が変更されることを示してから、名前を変更せずに終了します。例えば:
rename -n s/'One'/'Two'/g *
これにより、-n
フラグを設定しなかった場合に行われたすべての変更がリストされます。見栄えがよければ、を押しUpて前に戻り、を消去して-n
を押しますEnter(または置き換えて、-v
変更をすべて出力します)。
注:17.04より上のUbuntuバージョンはrename
デフォルトでは付属していませんが、まだリポジトリで利用可能です。使用sudo apt install rename
してインストールする
rename
コマンドについて知る前に、これを思い出しました。これは、私が追記するために行ったことです。– for f in *; do mv -v "$f" "prependThis$f"; done
(?:\.[0-9]{3})$
パターンで使用すると、パッシブグループ内の3桁のファイル拡張子すべてに一致します。例:rename s/^my_favorite_movie.avi(?:\.[0-9]{3})$/random_movie.avi/ *
。この正規表現のチートシートをご覧ください。
pyrenamerを試してください。
nautilusと統合されていませんが、仕事は完了します。ここにレビューがあります。
Thunar(XFCEの一部)には、個別に実行できる名前変更機能もあります。
nautilus-renamerと呼ばれるランチパッド上のプロジェクトがあるようです。make install
スクリプトをダウンロードして展開すると、実行してインストールできます。それはいくつかの機能を持っているようですが、もしあなたが何らかのプログラミングがあるかもしれないことを知っているなら、それはただのpythonスクリプトであるのであなたはあなたのニーズにそれを単に強化することができます。
コマンドラインでは、単一のファイルの名前を変更するには、コマンドは単純です
mv file1.txt file2.txt
バッチで実行する場合は、おそらくスクリプトを使用して実行する必要があります。詳細を提供していただければ、おそらく私または他の誰かがあなたのためにそれを作成することができます。ただし、ファイルにデータを追加するスクリプトは次のようになります。
#!/bin/bash
for file in *
do
# separate the file name from its extension
if [[ $file == *.* ]]; then
ext="${file##*.}"
fname="${file%.*}"
mv "$file" "${fname}_APPENDSTUFFHERE.$ext"
else
mv "$file" "${file}_APPENDSTUFFHERE"
fi
done
名前を変更する必要がある方法に応じて、たとえば、従う特定の名前変更ルールがある場合、これはおそらく調整されます。(私のbash-fooはそれほど素晴らしいものではないので、個人的にはPerlスクリプトを介してこれを行いますが、それは私だけです。)
以前に尋ねられた質問からファイル名と拡張子が分離されていることに注意してください。
コマンドラインを使用せずにWindowsで実行した場合と同様に、Tabキーではなく右矢印キーを使用します。これにより、Windowsのタブと同じように次のファイルが選択されます。
一度に多くのファイルの名前を変更するにはどうすればよいのか、実際には同じ質問ではありませんか しかし、その答えで提案したのと同じプログラムqmvを提案します。
qmvはrenameutilsパッケージの便利なツールです。お気に入りのテキストエディタを使用してファイルの名前を変更できます。vimのパワーと組み合わせて、優れた名前変更ユーティリティを使用できます。
私は通常qmv -f do
、たくさんのファイルの名前を変更したいディレクトリのようにそれを呼び出します。または、再帰的に名前を変更する場合qmv -R -f do
。
複数のファイルの名前を変更する必要があるときはいつでも、常にqmv(およびvim)を使用します。
唯一の適切なオプションがファイルの名前を手動で変更することである場合、それを行う素晴らしい方法はvidir
(moreutils
パッケージ内で)使用することです:
sudo add-apt-repository universe && sudo apt-get update && sudo apt-get install moreutils
DESCRIPTION
vidir allows editing of the contents of a directory in a text editor.
If no directory is specified, the current directory is edited.
When editing a directory, each item in the directory will appear on
its own numbered line. These numbers are how vidir keeps track of what
items are changed. Delete lines to remove files from the directory, or
edit filenames to rename files. You can also switch pairs of numbers
to swap filenames.
Note that if "-" is specified as the directory to edit, it reads a
list of filenames from stdin and displays those for editing.
Alternatively, a list of files can be specified on the command line.
現在の作業ディレクトリのコンテンツ:
.
├── bar
├── baz
└── foo
を実行しvidir
、名前を変更するファイル名を含む行のファイル名を変更します。ヒットCTRL+ OとCTRL+ X:
.
├── bar.bak
├── baz.old
└── foo.new
現在の作業ディレクトリのコンテンツ:
.
├── bar
├── baz
└── foo
現在の作業ディレクトリのファイルのコンテンツ:
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:
This is bar
- baz:
This is baz
- foo:
This is foo
$
を実行しvidir
、切り替えたいファイル名を含む行の数字を切り替えます。ヒットCTRL+ OとCTRL+ X:
.
├── bar
├── baz
└── foo
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:
This is foo
- baz:
This is bar
- foo:
This is baz
$
現在の作業ディレクトリのコンテンツ:
.
├── bar
├── baz
└── foo
を実行しvidir
、削除するファイルを含む行を削除します。ヒットCTRL+ OとCTRL+ X:
.
└── baz