Linux find 命令,无论时间跨度,递归查找 10 个最新文件

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10575665/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 06:18:07  来源:igfitidea点击:

Linux find command, find 10 latest files recursively regardless of time span

linuxfindtail

提问by Dejan Marjanovic

What have I tried so far...

到目前为止我尝试了什么...

Command:

命令:

find . -type f -ctime -3 | tail -n 5

Result:

结果:

./Mobilni Telefoni/01. Box Update/05. DC Unlocker Client/dc-unlocker_client-1.00.0857.exe
./Mobilni Telefoni/01. Box Update/39. Z3X Box/01. Update/01. Samsung Box/SamsungTool_12.4.exe
./Mobilni Telefoni/10. Nokia/1. SRPSKI  HRVATSKI  JEZICI/BB5/3xx_Series/Asha 300/06.97/rm781_06.97_ppm_d.rar
./GPS Navigacije/01. Garmin/03. Garmin Other/garmin_kgen_15.exe
./GPS Navigacije/01. Garmin/03. Garmin Other/test.txt

This output is OK, doesn't work good if I put wider time span. (notice I use -ctime and not -mtime because some uploaded files are modified few years ago)

这个输出没问题,如果我把时间跨度更宽,效果会不好。(注意我使用 -ctime 而不是 -mtime 因为几年前修改了一些上传的文件)

Problem is that files can be uploaded once a month, or once in a year, and I still need to get 10 latest files, regardless of time span.

问题是文件可以一个月上传一次,也可以一年上传一次,我仍然需要获取 10 个最新的文件,无论时间跨度如何。

If it can't be done, does tailonly limit output, or somehow just fetches number specified without huge performance impact on large number of files.

如果无法完成,则tail只会限制输出,或者以某种方式仅获取指定的数字,而不会对大量文件产生巨大的性能影响。

By using command from one answer on SO, I was able to get the files but some files were missing...

通过使用 SO 上的一个答案中的命令,我能够获取文件,但某些文件丢失了...

find . -type f -printf '%T@ %p\n' | sort -n | tail -10 | cut -f2- -d" "

Result:

结果:

./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/E2330_OXFKE2.rar
./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/FlashTool_E2_R6.zip
./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E210/E210_XFGH2.rar
./Mobilni Telefoni/05. iPhone/07. iFaith/iFaith-v1.4.1_windows-final.zip
./Mobilni Telefoni/05. iPhone/09. iPhone Browser/SetupiPhoneBrowser.1.93.exe
./Mobilni Telefoni/05. iPhone/10. iPhone_PC_Suite/iPhone_PC_Suite_Eng_v0.2.1.rar
./Mobilni Telefoni/05. iPhone/10. iPhone_PC_Suite/iPhone_PC_Suite_Ok.rar
./test
./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2152/E2152_XXJH4_OXFJI2.zip.filepart
./GPS Navigacije/01. Garmin/03. Garmin Other/test.txt

File garmin_kgen_15.exeis missing because it was created in 2008, but it was uploaded in last 24 hours.

文件garmin_kgen_15.exe丢失,因为它是在 2008 年创建的,但它是在过去 24 小时内上传的。

采纳答案by hakre

I was told that this is the solution:

有人告诉我这是解决方案:

find . -type f -printf "%C@ %p\n" | sort -rn | head -n 10

The key point is the printf %C@placeholder, which is the -ctimeone. I found it by reading man find.

关键点是 printf%C@占位符,它是-ctime一个。我是通过阅读找到的man find

Result:

结果:

1336992789.0000000000 ./Mobilni Telefoni/05. iPhone/03. iPhone 4G Firmware/5.1.1/iPhone3,1_5.1.1_9B206_Restore.ipsw.filepart
1336928538.0000000000 ./GPS Navigacije/01. Garmin/03. Garmin Other/test.txt
1336922295.0000000000 ./GPS Navigacije/01. Garmin/03. Garmin Other/garmin_kgen_15.exe
1336868365.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2152/E2152_XXJH4_OXFJI2.zip.filepart
1336867426.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E210/E210_XFGH2.rar
1336866301.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/FlashTool_E2_R6.zip
1336865921.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/E2330_OXFKE2.rar
1336865409.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2230/E2230_XXKC1_CDS.zip
1336865398.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2230/E2230_XXKC1_BIN.zip
1336864949.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2230/E2230_OXFKC1_CSC.zip

回答by Luis Andrés García

Easier:

更轻松:

filename=$(ls -t . | head -10)