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
がなかった場合、置換は1回しか行われなかったため、REPLACE_SEARCH.jpg
という名前になりました。大文字と小文字を区別しない場合は、/i
(つまり、最後に/gi
または/ig
を追加します)。
正規表現を使用すると、さらに多くのことができます。
このrename
は prename
(別名Perl rename
)コマンドであり、完全なPerl正規表現をサポートしていることに注意してください。パターンを使用する別のrename
があり、それほど強力ではありません。 prename
は(Perlとともに)Ubuntuにデフォルトでインストールされていましたが、今では次のようにする必要があります。
Sudo apt install rename
以下に例を示します。
追加:
rename 's/^/MyPrefix_/' *
document.pdf
はMyPrefix_document.pdf
に名前が変更されました削除:
また、不要な文字列を削除することもできます。 CD RIP 01 Song.mp3
のような名前の20個の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はそれらを翻訳しようとすることはできません。\.
and"\."
は.
と等しい(ただし、二重引用符とバックスラッシュが使用されます。たとえば、改行には「\ n」が使用されますが、"\."
は有効なバックエスケープシーケンスではないため、 .
)
実際、文字列の一部を全体ではなく引用符で囲むこともできます。's/Search/Replace/g'
はs/'Search'/'Replace'/g
および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
を使用してインストールします
nautilus-renamer という名前のプロジェクトがランチパッドにあるようです。スクリプトをダウンロードして展開すると、make install
を実行してインストールできます。それはいくつかの機能を持っているように見えます、またはあなたが何らかのプログラミングがあるかもしれないことを知っているなら、それはただpythonスクリプトであるのであなたのニーズにそれを単に強化することができます。
コマンドラインでは、単一のファイルの名前を変更するには、コマンドは単に
mv file1.txt file2.txt
バッチで実行する場合は、おそらくスクリプトを使用して実行する必要があります。あなたがより詳細を提供するなら、私または他の誰かがあなたのために1つをたぶん上げることができます。ただし、ファイルに内容を追加するスクリプトは次のようになります。
#!/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で実行していたのと同様に、タブキーではなく右矢印キーを使用します。これにより、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
私はkrenameを使用しています。 GUIアプリです。 mp3タグなどを読み取ることができます。
Krusaderの一部としてだけでなく、個別のアプリとしても存在します。
標準のPerlインストールの一部であるrename
スクリプトもあります(おそらくインストールされています)。 man rename
で確認してください。