これは簡単な書式設定の質問ですが、答えが私を逃してしまいます。'ls -lrt'をフォーマットしてbashのテキストファイルに送る方法
ワイルドカードを使用して特定のファイルを検索し、ファイルに出力し、電子メールで送信するためのbashスクリプトがあります。私はls -lrt $var*
にする必要がありますが、私はあなたが画面に表示されているように行ごとにきれいに印刷する出力を得ることができません。私は、出力ファイルにこのを探しています:
-rw-rw-r-- 1 user user 14173 Nov 30 06:39 20171129_file1.txt.gz<br>
-rw-rw-r-- 1 user user 30954 Nov 30 06:39 20171129_file2.txt.gz<br>
-rw-rw-r-- 1 user user 95933 Nov 30 07:01 20171129_file3.txt.gz<br>
-rw-rw-r-- 1 user user 399507 Nov 30 08:43 20171129_file4.txt.gz<br>
私はこの試みた:その後、
-rw-rw-r--
1
user
user
133119
Dec
1
07:06
20171130_filename.txt.gz
etc......
そして:
for f in `ls -ltr $var*`; do
echo $f >> /tmp/mailtext
done
をしかし、ファイル出力は、すべてのフィールドのための新たなラインを持っています私はechofのような新しい行を送らないprintfでこれを試しましたが、4つのファイルはすべて混乱しています。すべて1行に出力を生成
for f in `ls -ltr $var*`; do
printf "x $f" >> /tmp/mailtext
done
:
x -rw-rw-r--x 1x userx userx 13318x Decx 1x 07:06x 20171130_filename1.txt.gzx -rw-rw-r--x 1x userx userx 30793x Decx 1x 07:06x 20171130_filename2.txt.gzx -rw-rw-r--x 1x userx userx 99811x Decx 1x 08:00x 20171130_filename3.txt.gzx -rw-rw-r--x 1x userx userx 41363x Decx 1x 08:10x 20171130_filename4.txt.gz
は、もちろん私はprintfの「Xの$ fが\ n」を試みたが、それは最初の試みの1のように見えました。
だから、どのようにこの単純な書式設定を行うのですか?ありがとうございました!やって
なぜ 'ls -ltr $ var *>/tmpmailtext'でないのですか?がんばろう。 – shellter
[ls'の出力を解析しないでください](http://mywiki.wooledge.org/ParsingLs)、[コマンド出力の繰り返しに 'for'ループを使用しないでください](http: /mywiki.wooledge.org/BashFAQ/001)。 – chepner
あなたの質問に書式を使用してください。 – PesaThe