1

アプリケーションの config フォルダーで、すべての*.yml.sampleファイルを*.yml. 誰か助けてくれませんか?ターミナルを使用してこれを実行したい。これを行うための単一のコマンドはありますか?

4

4 に答える 4

3

単純なシェル ループとbasenameコマンドを使用して、2 番目の拡張子を取り除きます。

for f in *.yml.sample; do
    mv $f `basename $f .sample`
done
于 2012-06-19T10:18:16.843 に答える
2

それは簡単なmmvことです。

$ mmv "*.yaml.sample" "#1.yaml"

ここでは引用符が重要です。

于 2012-06-19T13:18:15.060 に答える
2

片道、使用sed:

ls -1 *.yml.sample | sed "s%\(.*\).yml.sample%mv & \1.yml%" | sh

またはもっと簡単に:

ls -1 *.yml.sample | sed "s%\(.*\).sample%mv & \1%" | sh

編集:

lsは便利ですが、スペースや改行などで解析が失敗する可能性があります。この場合、ループと bash 文字列の置換が最適です。

for i in *.yml.sample; do mv "$i" "${i%.sample}"; done

あなたのためのいくつかの読書:

Linux で複数のファイルの名前を変更する
ls の出力を解析してはいけない理由

HTH

于 2012-06-19T13:25:33.470 に答える
1
find . -iname "*.png" -exec bash -c 'mv "$0" "${0%\.png}@2x.png"' {} \;

これを使用して、現在のフォルダー内のすべてのファイルの名前を「.png」から「@2x.png」に変更しました。これは、Retina イメージに名前を付けるのに非常に便利です。iOS 開発者に広く使用されています。

于 2013-05-28T09:18:48.393 に答える