4

我想对查找的结果进行如下排序:

我在用:

find . -type f -print0 

结果是:

/mnt/sdcard/qu/led/t1/temp42.txt
/mnt/sdcard/qu/led/File.plist
/mnt/sdcard/qu/yellow.plist
/mnt/sdcard/SHA1Keys/SHA1SUMS
/mnt/sdcard/File.xml
/mnt/sdcard/File.plist
/mnt/sdcard/.DS_Store

但我希望结果为:

/mnt/sdcard/.DS_Store
/mnt/sdcard/File.plist
/mnt/sdcard/File.xml
/mnt/sdcard/SHA1Keys/SHA1SUMS
/mnt/sdcard/qu/yellow.plist
/mnt/sdcard/qu/led/File.plist
/mnt/sdcard/qu/led/t1/temp42.txt

如果我这样做:

find . -type f print0 | sort -r 

订单全乱了。我在某处看到了这个解决方案:

find . -type f -ls | awk '{print $(NF-3), $(NF-2), $(NF-1), $NF}'

但我不能使用它,因为它会打印结果。

另请注意,我没有写入文件系统的权限,因此写入文件并反转行不是一种选择。

4

2 回答 2

13

使用tac( catbackwards) 反转输出。您不需要以相反的顺序对其进行排序,只需将其反转即可。

find . -type f | tac

如果你想保留-print0then 使用:

find . -type f -print0 | tac -rs '\0'
于 2013-10-30T19:03:06.623 回答
2

或者,您可以使用tail -r

find . -type f | tail -r
于 2016-12-01T15:29:19.627 回答