KSH сортировать имена файлов - PullRequest
1 голос
/ 06 января 2012

Я ищу в ряде каталогов строку "searchstring", а затем запускаю скрипт для каждого файла $:

for file in `find $dir -name ${searchstring}'*'`;
do
    echo $file >> $debug
    script.sh $file >> $output
done

Мой файл $ debug выдает следующее:

/ root / 0007_searchstring / out / имя_файла_20120105_020000.log
/root/0006_searchstring/out/filename_20120105_010000.log
/root/0005_searchstring/out/filename_20120105_013000.loglog_100yh.yh.ymm.yhmm.yhmm.yhmm.yhmm.yhmm.yhmm.yhmm_ymm)..

Есть ли способ получить поиск по порядку по имени файла или по mktime?Должен ли я сначала найти трубу для сортировки?Создайте массив и затем сортируйте его согласно этому вопросу ?

Ответы [ 4 ]

1 голос
/ 07 января 2012

Для сортировки по времени модификации вы можете использовать stat с find:

$ find . -exec stat {} -c '%Y %n' \; | sort -n | cut -d ' ' -f 2
1 голос
/ 06 января 2012

Если вы хотите игнорировать путь к каталогу и просто использовать имя файла, тогда вы сможете использовать:

for file in `find $dir -name ${searchstring}'*' | sort --field-separator=/ --key=4`;
1 голос
/ 06 января 2012

'ls -t', если вам нужно восстановить список на основе отметки времени.

'sort -n', если список довольно статичен?

0 голосов
/ 06 января 2012

Вы можете передать вывод команды find через sort для сортировки по имени:

...