私は、今のところ、これらの迷惑なファイル名をすべて大量に変更して、コマンドラインで読みやすく操作しやすくするための解決策を見つけました。
そのため、多くのコマンドの中に、デトックスと呼ばれる小さなソフトウェアが見つかりました。デフォルトでは、スペースは_
。に置き換えられます。マンページを読んでも、デトックスでファイルの名前をスペースに置き換えて名前を変更する方法がわかりませんでした-
。
[/] cd test
one five/ one four/ one one/ one three/ one two/
[test] detox *
[test] l
one_five/ one_four/ one_one/ one_three/ one_two/
[test]
どうやってするか?
私は見つけることができない.detoxrc
ファイル(または、このプログラムに関連したファイルのいずれか)を、私はそれを作成した場合、私はそれに何を置くことを知りません。
PSデトックスに代わるものはありますか?
デトックスにはそのためのオプションがあるようには見えません。ソースコードを変更して、目的の出力でフィルターを追加するのはかなり簡単なはずです(フィルターを少し変更しsafe
ます。先頭-
が削除されていることを確認することを忘れないでください)。
の結果を後処理するdetox
か、他のツールを完全に使用することができます。より柔軟なファイル名変更ツールはたくさんあります。
Perlの名前変更コマンドは(UTIL-Linuxのと混同しないrename
コマンド)、任意のPerlコードを含むファイル名を変換するサポートしています。このコマンドはrename
、Debianおよび派生物(Ubuntu、Mint、…)と同様に使用できます。Archではperl-renameとして利用できます。単に先頭に変更_
し-
て削除したい場合は-
、次を使用できます。
rename 's/_/-/g; s/\A-*//' *
これは、現在のディレクトリ内のファイル(ドットファイルを除く)にのみ影響します。ディレクトリを再帰的に操作するには、これをfind
コマンドと組み合わせます。
find . -depth -exec rename 's/_/-/g; s/\A-*//' {} +
デトックスの他の機能はPerlで表現でき、それらのほとんどはs/PATTERN/REPLACEMENT/
演算子で表現できます。たとえば、文字と数字のみを保持し-
、他の文字のシーケンスをに置き換えるには、次を使用できます。
rename 's/[^[:alnum:]]+/-/g; s/\A-//' …
あなたがしたい場合はASCIIでUnicode文字を概算は、使用することができますテキスト:: Unidecodeを:
perl -C -MText::Unidecode /usr/bin/rename '$_ = unidecode($_)' …
もう1つの強力な名前変更ツールは、zshシェルからのzmvコマンドです。最初にこれを実行します(インタラクティブに使用するためにあなたに入れてください):~/.zshrc
autoload -U zmv
先頭に変更_
し-
て削除するには-
、次を使用できます。
zmv '**/*' '$f:h/${${f##*/-#}//_/-}'
このパターン**/*
により、このコマンドは現在のディレクトリのサブディレクトリで再帰的に動作します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加