これはおそらく非常に簡単な質問であることを知っていますが、私はまだコマンドラインに初めてアクセスし、基本的なコマンドだけをマスターしました。
私が通っていた大学で、講義プレゼンテーションのいくつか(約25個ほど)をダウンロードしましたが、名前が...
L2%20Development%20of%20immune%20system.pptx
L4%20Molecular%20Recognition.pdf
ご覧のとおり、%20
スペースの代わりにURLエンコードを使用してダウンロードされます。
%20
私の質問は、これらすべてのファイルの名前をまとめて変更して削除し、スペースに変更する方法です。
答え1
rename
Debianとその派生製品(Ubuntuを含む)では、各ファイル名にPerl式を適用することができます。
rename 's/%20/ /g' L*
| | | | |
| | | | +--- Files to match
| | | +------- globally
| | +--------- with space
| +------------ %20
+--------------- Substitute
スペースの代わりに下線を使用することを考えてみましょう。一般的にはcli世界で生活が楽になるからです。
すべてのURIエンコーディングに一般化されています。
rename 'use URI::Escape; $_ = uri_unescape $_' *%*
答え2
使用deurlname
できるツール名の変更。
$ ls
L4%20Molecular%20Recognition.pdf
$ deurlname L4%20Molecular%20Recognition.pdf
$ ls
L4 Molecular Recognition.pdf
私は書いた台本エディタでファイルの名前を変更できます。
ファイル名をスクリプトに渡すと、そのファイル名を含むエディタが開きます。次にファイル名を編集し、エディタを作成して閉じます。
$ ls
L4%20Molecular%20Recognition.pdf
$ viname L4%20Molecular%20Recognition.pdf
======================
L4%20Molecular%20Recognition.pdf█
======================
======================
L4-Molecular-Recognition.pdf█
======================
(pretend this is an editor)
$ ls
L4-Molecular-Recognition.pdf
私も書いた台本 私が好む命名スキームと一致するようにファイル名を自動的に変更します。ファイルをダウンロードするときに最初にすることは、そのファイルに対してこのスクリプトを呼び出すことです。
$ ls
L4%20Molecular%20Recognition.pdf
$ nf L4%20Molecular%20Recognition.pdf
'L4%20Molecular%20Recognition.pdf' renamed to 'l4-molecular-recognition.pdf'
$ ls
L4-molecular-recognition.pdf
そのスクリプトに注意してください。かなり劇的な名前変更が可能です。nf -n
ファイル名を変更する前に、テスト実行()オプションを使用してください。
答え3
convmv
以下を使用できます。ファイルを含むディレクトリから:
出力が何であるかをテストするには:
convmv --unescape *%20*
実際にファイル名を変更するには、以下を追加します--notest
。
convmv --unescape --notest *%20*