Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Как в bash узнать имя последнего файла скопированного в папку?

#shell #bash #linux


Пробовал варианты:
ls -lrt | awk '{ f=$NF }; END{ print f }'

и
ls -t1 | head -n1

Но последний скопированный в папку файл не показывается. Какие еще есть варианты?
UPD: Вариант тоже не работает:
ls -t1 | tail -n1

Все эти команды выдают всегда какое-то одно имя файла для моей папки. Хотя файлы
продолжают непрерывно поступать в папку. Нужен именно последний попавший в папку файл.
Это необязательно должен быть самый новый файл.    


Ответы

Ответ 1



@abg, время модификации файла измеряется в секундах. Поэтому при массовом копировании таких файлов (с одинаковым временем) будет много. Ваша команда ls -t1 | tail -n1 показывает последний (самый старый, а не свежий) файл. А вот ls -t | head -1 покажет самый новый (один из них). А вообще-то, если опишите задачу поподробнее, то может быть найдется какое-то лучшее решение.

Ответ 2



Для общего случая, возможно, подойдет cp -v 'from' 'to' | tail -1 Чтобы выделить название файла, наверное, придется воспользоваться регуляркой. Примерно так: cp -v 'from' 'to' | tail -1 | sed 's/.*\/\(.*\)»$/\1/'

Комментариев нет:

Отправить комментарий