これまで、私はすべての迷惑なファイル名をコマンドラインから読みやすく操作しやすく一括変更するソリューションを見つけました。
だからという数多くの命令の中で小さなソフトウェアを発見しました。デトックス。デフォルトでは、スペースはで置き換えられます_
。マニュアルページを読んでも解読がファイル名を変更し、スペースを-
。
[/] 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復号以外に他の方法はありますか?
答え1
少なくともdetoxバージョン1.2.0以降、フィルタリングをカスタマイズできます(ディストリビューションによっては、次のコマンド/場所を変更する必要があります)。最初:
cp /usr/share/detox/safe.tbl ~/mysafe.tbl
次にファイルを編集し、mysafe.tbl
「space」という単語(約127行)を検索して、下線をハイフンに変更します。
それでは、~/.detoxrc
次のように修正してください。
sequence hyphenated {
safe {filename "/home/MY_USSERNAME/mysafe.tbl";};
#wipeup {remove_trailing;};
};
(もちろん「MY_USERNAME」を変更してください...)
次に、次のコマンドを実行します。
detox -vs hyphenated *
行ってみるといいと思います:)
20170801 編集:DetoxにはUTF-8の問題があるようです。いくつかのパッチが作成され、アップストリームとDebianのメインネットに電子メールで送信されました。これで、「github」のようなサイトでバグを開く必要があります。これを理解する時間です...
答え2
デトックスはオプションではないようです。必要な出力を含むフィルタを追加するためにソースコードを変更することは非常に簡単でなければなりません(フィルタを少し変更して先行文字を削除するsafe
ことを忘れないでください)。-
結果を後処理しdetox
たり、他のツールを完全に使用したりできます。より柔軟なファイル名変更ツールがたくさんあります。
これパールの名前を変更するコマンド(util-linuxコマンドと混同しないでくださいrename
)は、任意のPerlコードを使用してファイル名を変換することをサポートしています。このコマンドはrename
Debianおよびその派生製品(Ubuntu、Mintなど)で使用できます。 Archで利用可能:パールの名前を変更する。先行を変更して削除する_
には、次のものを使用できます。-
-
rename 's/_/-/g; s/\A-*//' *
これは現在のディレクトリのファイルにのみ影響します(ドットファイルを除く)。ディレクトリに対して再帰的に作業するには、find
それをコマンドと組み合わせます。
find . -depth -exec rename 's/_/-/g; s/\A-*//' {} +
Detoxの他の機能はPerlで表現することができ、ほとんどは以下を使用します。s/PATTERN/REPLACEMENT/
オペレーター。たとえば、文字と数字のみを保持し、他の文字シーケンスを次のように置き換えるに-
は
rename 's/[^[:alnum:]]+/-/g; s/\A-//' …
欲しいならASCIIを使用したUnicode文字の近似、あなたはそれを使用することができますテキスト::Unicode:
perl -C -MText::Unidecode /usr/bin/rename '$_ = unidecode($_)' …
もう一つの強力な名前変更ツールはズマブコマンドは以下から来ます。扱いにくいシェル。まず実行します(~/.zshrc
対話形式で使用)。
autoload -U zmv
_
行間を変更して-
削除するには、次のものを-
使用できます。
zmv '**/*' '$f:h/${${f##*/-#}//_/-}'
このモード**/*
では、コマンドは現在のディレクトリのサブディレクトリで繰り返し動作します。