1. ホーム
  2. linux

[解決済み] ls -l 出力の各行に対する繰り返し処理

2022-06-20 23:33:31

質問

の出力の各行を反復処理したい。 ls -l /some/dir/*

今、私が試しているのは for x in $(ls -l $1); do echo $x; done

しかし、これは行の中の各要素を別々に反復するので、次のようになります。

-r--r-----
1
ivanevf
eng
1074
Apr
22
13:07
File1

-r--r-----
1
ivanevf
eng
1074
Apr
22
13:17
File2

しかし、私は各行を全体として反復処理したいのですが。 どうすればいいのでしょうか?

どのように解決するのですか?

以下のように、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 | readを使用します。

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

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

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