1

「|」の最初の出現を削除する次のコマンドがあります ファイルの名前から「!」に置き換えます。

rootcmd -s sh -c "find . -type f | grep '|' | rename '|' '!' *"

操作するファイルと同じディレクトリから実行すると、正常に動作します。これを子ディレクトリと呼びましょう。ただし、複数の子ディレクトリを持つ親ディレクトリがあります。親ディレクトリから実行すると、名前の変更が機能しません。すべての子ディレクトリをトラバースして、同じ操作を行いたいです。興味深いことに、コマンドの最初の部分 (名前の変更を除く) が機能することがわかっています。

rootcmd -s sh -c "find . -type f | grep '|'"

上記は、「|」を含むすべての子ディレクトリ内のすべてのファイルを返します ファイル名に。ただし、名前変更コマンドを追加すると、ファイルの名前が意図したとおりに変更されません。

これを説明または修正できるLinux / Bashの専門家はいますか?

4

1 に答える 1

0

それは間違っている。の代わりにrename something something *、次のように xargs を使用して find の出力を渡す必要があります。

rootcmd -s sh -c "find . -type f | grep '|' | xargs rename '|' '!'"
于 2013-11-01T23:24:48.253 に答える