Вы можете просто проверить любой адрес с помощью команды ip route get
(см. man ip-route
). Например,
$ ip route get 192.168.1.99
192.168.1.99 dev eth0 src 192.168.1.0
get file names only... sorted by modification day
find
+sort
+cut
подход:
find. -regex ".*/[0-9.]+" -printf "%T@ %f\n" | sort | cut -d' ' -f2
%T@
-Время последней модификации файла, где @
равно секунд с Jan. 1, 1970, 00:00 GMT,
с дробной частью
%f
-Имя файла с удаленными начальными каталогами (только последний элемент)
Для сортировки по убыванию:
find. -regex ".*/[0-9.]+" -printf "%T@ %f\n" | sort -k1,1r | cut -d' ' -f2
Ваш метод можно адаптировать для работы в простых случаях. Основная проблема, с которой вы сталкиваетесь, заключается в том, что вы передаете ввод в ls
, но ls
не принимает никаких входных данных. ls
принимает аргументы командной строки. Таким образом, вам нужно передать вывод find
в качестве аргументов в ls
с подстановкой команд. Кроме того, в случае совпадения каталога, передайте от -d
до ls
, чтобы отобразить сам каталог, а не его содержимое.
OLDDATA=$(ls -td $(find. -regex ".*/[0-9.]+"))
Только в простых случаях, т.к. есть два ограничения:
$OLDDATA
после ). Поэтому предполагается, что имена файлов не содержат специальных символов (, пробелов или подстановочных знаков \[*?
). ls
могут искажать символы, которые не печатаются в текущей локали. find … -exec
и xargs
здесь не помогут, так как ls
нужно запустить один раз, чтобы получить правильный порядок имен файлов. Все, что они могли сделать, это скрыть ошибки и вывести некорректно отсортированный вывод, а в случае xargs
исказить еще несколько символов.)Надежный и простой способ сделать это — использовать zsh . Он имеет возможность сортировать совпадения с подстановочными знаками благодаря квалификаторам glob .
setopt extended_glob
OLDDATA=(**/[0-9.]##(om))
**/
рекурсивно обходит подкаталоги, избегая использования find
. ##
означает «один или несколько из предыдущих» в синтаксисе расширенного glob zsh, он аналогичен +
в синтаксисе (расширенного )регулярного выражения.(om)
— это квалификатор glob для сортировки файлов по времени модификации, например ls -t
. Общеизвестно, что не существует простого способа сделать это надежно с помощью инструментов POSIX или даже с помощью инструментов GNU и ksh.