Linux unix查找的反向打印结果(不带排序)
我想对查找结果进行如下排序: 我正在使用:Linux unix查找的反向打印结果(不带排序),linux,shell,unix,find,Linux,Shell,Unix,Find,我想对查找结果进行如下排序: 我正在使用: 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 但我希望结果是: /
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}'
但我不能用它,因为它会打印结果
还要注意,我没有写入文件系统的权限,因此写入文件并反转行不是一个选项。使用tac
(cat
向后)反转输出。你不需要按相反的顺序排序,你只需要把它倒过来
find . -type f | tac
如果要保留-print0
,请使用:
find . -type f -print0 | tac -rs '\0'
或者,您可以使用
tail-r
:
find . -type f | tail -r
find
的输出已排序。您只需要使用tac
反向打印此问题属于超级用户而不是堆栈溢出IMHO。您使用的是-print
还是-print0
?您的输出建议-print
@jksah,find
的输出没有以任何特定方式排序。它们看起来像是按字母顺序倒序排列的,但这只是巧合。find
的输出顺序取决于文件系统内部存储文件的方式。虽然这会颠倒顺序,但不会以任何特定顺序输出文件。find
的输出顺序取决于文件系统内部存储文件的方式。在OSX上,您可以通过安装coreutils
来获取tac-请参阅此答案:对我来说,此答案不适用于文件名中包含0
的文件。此选项仅适用于Mac等BSD系统,不带GNUtail
。