2012-05-13 1 views
19

Что есть я пытался до сих пор ...Linux команда находкой, найти 10 последних файлов рекурсивно, независимо от промежутка времени

Команда:

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

Результат:

./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 

Этот выход Хорошо, не работает, если я использую более широкий интервал времени. (заметьте, что я использую -ctime, а не -mtime, потому что некоторые загруженные файлы модифицированы несколько лет назад)

Проблема в том, что файлы можно загружать один раз в месяц или раз в год, и мне все еще нужно получить 10 последних файлов , независимо от времени.

Если это невозможно, то tail ограничивает выход, или как-то просто выбирает число, указанное без огромного влияния производительности на большое количество файлов.

С помощью команды из одного ответа на SO, я был в состоянии получить файлы, но некоторые файлы отсутствовали ...

find . -type f -printf '%[email protected] %p\n' | sort -n | tail -10 | cut -f2- -d" " 

Результат:

./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 

Файл garmin_kgen_15.exe отсутствует потому, что он был создан в 2008 году, но был загружен за последние 24 часа.

+0

Какое время файла вы хотите использовать в качестве ключа в роде? ctime/mtime/smth еще? Вы можете проконсультироваться на странице 'man' find, чтобы найти правильный'% XX' вместо '% T @' – osgx

+0

@osgx ctime (?), Файлы загружаются через FTP ... будут делать. –

+2

Вы пробовали с '% C @'? - 'найти. -type f -ctime -3 -printf "% C @% p \ n" | сортировать | tail -n 5 | sed 's/[^] * \ (. * \)/\ 1 /' ' – hakre

ответ

36

мне сказали, что это решение:

find . -type f -printf "%[email protected] %p\n" | sort -rn | head -n 10 

Ключевым моментом является Printf %[email protected] заполнитель, который является -ctime один. Я нашел его, прочитав man find.

Результат:

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 
+0

Ты забыл - не сортировать. Это должно быть: найти. -type f -printf "% C @% p \ n" | sort -rn | head -n 10 – qwertzguy

+0

Знаете ли вы, что режим сортировки по умолчанию для сортировки? '-n' звучит нормально, но – hakre

+0

Это в алфавитном порядке, но это зависит от языкового стандарта: http://unix.stackexchange.com/questions/43465/whats-the-default-order-of-linux-sort – qwertzguy

-3

Легче:

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

Это не рекурсивное решение; он будет находить файлы только в текущем каталоге, а не в подкаталогах. –

Смежные вопросы