find ステートメントで awk コマンドが機能しません。

find ステートメントで awk コマンドが機能しません。

名前に数字とドット、または@tmpを含むすべてのディレクトリを見つけ、日付でソートし、3番目のステートメントの結果を変数に保存するスクリプトを作成しました。しかし、これは常に私に最初のクエリ結果を与えます。正しい結果を得るにはどうすればよいですか?

TL; DR 一致するディレクトリを日付で並べ替え、そのリストの3番目のディレクトリ名を印刷したいと思います。

OLDDATA=`find . \( -name '*@tmp' -o -regex '.*/[0-9.]+' \) -exec ls -t {} + | awk "NR==3 { print }" `

ls -t 結果の例

./1.2.3.4.5.6.102: ./1.2.3.4.5.6.101: ./1.2.3.4.5.6.100: ./1.2.3.4.5.6.99:
./1.2.3.4.5.6.98: ./1.2.3.4.5.6.97: ./1.2.3.4.5.6.96: ./1.2.3.4.5.6.95:
./1.2.3.4.5.6.94: ./1.2.3.4.5.6.93: ./1.2.3.4.5.6.92: ./1.2.3.4.5.6.91:
./1.2.3.4.5.6.90: ./1.2.3.4.5.6.89: ./1.2.3.4.5.6.88: ./1.2.3.4.5.6.87:

ベストアンサー1

場合によっては、正しい説明は次のとおりです。

find . \( -name '*@tmp' -o -regex '.*/[0-9.]+' \) -exec ls -t {} \; | awk 'NR==3'

おすすめ記事