0

私は次のようなbashスクリプトを持っています:

for d in /home/test/*
    do
    echo $d
done

これは次のように出力されます:

/home/test/newer dir
/home/test/oldest dir

「最も古いディレクトリ」ディレクトリがリストの最初に表示されるように、フォルダを作成時間順に並べたいと思います。ls とツリーのバリエーションを試してみましたが、役に立ちませんでした。

例えば、

for d in `ls -d -c -1 $PWD/*`

戻り値:

/home/test/oldest
dir
/home/test/newer
dir

非常に近いですが、ディレクトリ名のスペースを尊重しません。私の質問は、どのように最も古いディレクトリを一番上に置き、空白をサポートするのですか?

4

2 に答える 2

1
ls -d -c $PWD/* | while read line
  do echo "$line"
done
于 2013-04-19T23:03:35.127 に答える
0

シュワルツ変換のような別のテクニック:

stat -c $'%Z\t%n' /home/test/* | sort -n | cut -f2- |
while IFS= read -r filename; do
    # ...

このソリューションは、改行を含むファイル名では脆弱です。

于 2013-04-20T16:23:15.340 に答える