GNU/Linux >> Linux の 問題 >  >> Linux

ls -l 出力の各行を繰り返す

次のように、IFS を改行に設定します。

IFS='
'
for x in `ls -l $1`; do echo $x; done

IFS を永続的に設定したくない場合は、その周りにサブシェルを置きます:

(IFS='
'
for x in `ls -l $1`; do echo $x; done)

または while | を使用します。代わりに読んでください:

ls -l $1 | while read x; do echo $x; done

同じシェル レベルで while/read を実行するもう 1 つのオプション:

while read x; do echo $x; done << EOF
$(ls -l $1)
EOF

すでに述べたように、awk はこれに適したツールです。 awk を使用したくない場合は、「ls -l」の出力を 1 行ずつ解析する代わりに、すべてのファイルを反復処理して、次のように個々のファイルごとに「ls -l」を実行できます。

for x in * ; do echo `ls -ld $x` ; done

各行で何をしたいかによって異なります。 awk は、このタイプの処理に役立つユーティリティです。例:

 ls -l | awk '{print $9, $5}'

.. 私のシステムでは、ディレクトリ内の各アイテムの名前とサイズが出力されます。


Linux
  1. Vimの各行の先頭にテキストを挿入する方法

  2. ファイルの行をループする方法は?

  3. Wcで各行の文字を数えますか?

  1. Bashスクリプト:コマンド出力の各行を配列内の値に割り当てる方法は?

  2. SshでChromiumコマンドラインを強制終了する方法は?

  3. C hello world のアセンブリ出力の各行の意味は何ですか?

  1. シェル コマンドの出力の最初の行を取得する

  2. コマンド出力に改行を追加する

  3. 実行時のコマンドの各出力のプレフィックス