私はこれらをテストしていないので、 echo
を入れます コマンドの先頭にあるので、エコーを削除して実際に実行する前に試すことができます。
for f in *v9.zip; do echo mv "${f}" "${f%v9.zip}.zip"; done
for f in *_*; do echo mv "${f}" "${f//_/-}"; done
3 番目の問題については、それも実行できると確信していますが、@tchrist が述べたように、生のシェルのワンライナーよりも洗練されたアプローチが役立つかもしれません。
rename
があります このコマンドは、1998 年頃の Larry Wall のオリジナル コードに基づいて Robin Barker によって作成された、ほとんどの Debian/Ubuntu ベースのディストリビューションで提供されています(!)。
以下はドキュメントからの抜粋です:
"rename" renames the filenames supplied according to the rule specified as the first argument. The perlexpr argument is a Perl expression which is expected to modify the $_ string in Perl for at least some of the filenames specified. If a given filename is not modified by the expression, it will not be renamed. If no filenames are given on the command line, filenames will be read via standard input. For example, to rename all files matching "*.bak" to strip the extension, you might say rename 's/\.bak$//' *.bak To translate uppercase names to lower, you'd use rename 'y/A-Z/a-z/' *
これは perl を使用しているため、perl 式を使用してパターンに一致させることができます。実際、tchrist のスクリプトと同じように機能すると思います。
ファイルの名前を一括で変更するためのもう 1 つの非常に便利なツール セットは、Oskar Liljeblad による renameutils コレクションです。ソース コードは、Free Software Foundation によってホストされています。さらに、多くのディストリビューション (特に Debian/Ubuntu ベースのディストリビューション) には renameutils
があります。 これらのツールをパッケージ化します。
これらのディストリビューションのいずれかにインストールできます:
$ sudo apt-get install renameutils
次に、ファイルの名前を変更するには、次のコマンドを実行します:
$ qmv
ファイルのリストが表示されたテキスト エディターがポップアップ表示され、エディターの検索と置換機能を使用して操作できます。
私のお気に入りの解決策は、私自身のrenameです 脚本。あなたの問題に対応する最も簡単な例は次のとおりです:
% rename 's/_/-/g' *
% rename 's/(\p{Lower})(\p{Upper})/$1 $2/g' *
私はファイル名の空白、特に縦方向の空白が大嫌いですが:
% rename 's/\s//g' *
% rename 's/\v//g' *
など。 The Larry Wall のスクリプトに基づいていますが、次のようにオプションで拡張されています。
usage: /home/tchrist/scripts/rename [-ifqI0vnml] [-F file] perlexpr [files]
-i ask about clobbering existent files
-f force clobbers without inquiring
-q quietly skip clobbers without inquiring
-I ask about all changes
-0 read null-terminated filenames
-v verbosely says what its doing
-V verbosely says what its doing but with newlines between old and new filenames
-n don't really do it
-m to always rename
-l to always symlink
-F path read filelist to change from magic path(s)
ご覧のとおり、ファイルの名前だけでなく、同じパターンを使用してシンボリック リンクが指している場所も変更できます。 s///
を使用する必要はありません
そのディレクトリ内の他のツールは、ほとんどが Unicode 作業用であり、そのうちいくつかは非常に便利なものです。