awk経由で実行したいxyzファイルがたくさんあります。各ファイルに「_s」を追加して新しいファイルを作成したいと思います。デフォルト名の構文を正しく指定する際には、いくつかの問題があります。これが私が持っているものです。
for i in *.xyz; do awk -F" " '{printf $1 $2 $3}' > $(basename $i)_s.xyz ; done
答え1
処理されたファイルの出力を新しいファイルに書き込み、_s
ファイル名部分に拡張子を追加する正しい構文は次のとおりです。
for i in *.xyz; do awk -F" " '{printf $1 $2 $3}' $i > ${i%\.*}_s.xyz ; done
このセクションでは、最後の項目から最後まで文字列を${i%\.*}
切り取り、拡張子を効果的に削除します。$i
.
あなたの例ではを使用できますが、${i%\.xyz}
これはあまり一般的ではありません。
答え2
ファイル名を "ls *.xyz" に渡して $i の名前を変更する必要があります。
for i in `ls *.xyz`; do
mv $i $i_s
done