現在のディレクトリ内のすべてのファイルの名前を ".hola"から ".txt"に変更するワンライナーを作成する必要があります。例えばawk区切り文字でALL行で最後のフィールドを取得する
:
ls -1 *.hola | awk '{NF="";print "$0.hola $0.txt"}'
(*)
そしてxargs mv -T
に標準入力を渡す:
sample.hola and name.hi.hola
は、私のようなものを考えていた
それぞれsample.txt
とname.hi.txt
に変更されます|
しかし、例の(*)の出力はsample
とname hi
となります。
を使用してname.hi.hola
の出力をname.hi
にするにはどうすればよいですか?
http://stackoverflow.com/questions/13857836/display-all-fields-except-the-lastを参照してください。次に 'echo name.hi.hola | awk 'BEGIN {OFS = "。"; FS = "。"} {NF - ;印刷}' '。これをあなたの例に適応させることができます。 Mark Reedの答えはあなたが解決しようとする問題に適しています。 – zedfoxus
そのような 'NF'の変更は、BSD/MacOS awkではなく、GNU awkでのみ動作することに注意してください。 –