4

A.js特定のディレクトリに、がありB.jsC.jsbashシェルでSINGLEコマンドラインを記述して、これらのファイルの名前を_A、_B、_Cに変更したいと思います。これどうやってするの?

試しfind -name '*.sh' | xargs -I file mv file basename file .shましたが、機能しません。basenameファイル.shがネストされたコマンドとして認識されません。

4

3 に答える 3

8

どうですか

rename 's/(.*).js/_$1/' *.js

システムの名前変更の構文を確認してください。

上記のコマンドは& などに名前が変更A.jsされます。_A

拡張子を保持したい場合は、以下が役立ちます。

rename 's/(.*)/_$1/' *.js
于 2013-03-13T08:48:47.850 に答える
4

ファイルの拡張子を保持したい場合は、次のようにします。

$ for f in * ; do mv "$f" _"$f" ; done

ディレクトリ内の各ファイルの名前を取得し、先頭に「_」を追加します。

于 2013-03-13T08:36:12.307 に答える
0

ディレクトリトラバーサルを使用して、それを行う簡単なネイティブの方法:

find -type f | xargs -I {} mv {} {}.txt

最後に拡張子 .txt を追加して、すべてのファイルの名前を変更します。

そして、並列化によるより一般的なクールな方法:

find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:4}change_between${f:8}'
于 2015-12-29T12:10:39.577 に答える