Предполагая, что у вас есть доступ к инструментам GNU (да, если вы используете Linux) , Я бы вместо этого использовал stat
. Например:
$ ls -l
total 0
-rw-r--r-- 1 terdon terdon 0 Sep 15 16:49 file1
-rw-r--r-- 1 terdon terdon 0 Sep 15 16:39 file2
-rw-r--r-- 1 terdon terdon 0 Sep 15 16:29 file3
-rw-r--r-- 1 terdon terdon 0 Sep 15 16:19 file4
-rw-r--r-- 1 terdon terdon 0 Sep 15 16:09 file5
-rw-r--r-- 1 terdon terdon 0 Sep 15 15:59 file6
-rw-r--r-- 1 terdon terdon 0 Sep 15 15:49 file7
Итак, пятый самый новый файл - file5
. Чтобы напечатать именно это, вы можете сделать:
$ stat --printf '%Y %n\0' * | sort -zrnk1 |
awk -vRS='\0' 'NR==5{sub(/^[^ ]* /,"",$0); print}'
Затем вы можете легко превратить это в функцию оболочки, которая может принимать N (5 в вашем примере) в качестве аргумента. Просто добавьте эти строки в ваш ~ / .bashrc
или аналогичный:
nthfile() {
stat --printf '%Y %n\0' * | sort -zrnk1 |
awk -vRS='\0' -vn="$1" 'NR==n{sub(/^[^ ]* /,"",$0); print}'
}
Обратите внимание, что это также покажет вам каталоги. Если вам нужно, чтобы он соответствовал скрытым файлам, запустите (при условии, что вы используете bash) shopt -s dotglob
перед приведенной выше командой.
stat --printf '% Y% n \ 0' *
: для каждого файла или каталога в текущей папке вывести дату изменения в секундах с начала эпохи (% s
) и имя файла (% n
) и заканчивайте каждую строку \ 0
вместо \ n
. Это позволяет нам правильно работать с именами файлов, содержащими символы новой строки. sort -zrnk1
: отсортировать вывод в обратном порядке сортировки ( -r
), от самого нового к самому старому. -z
сообщает sort
ожидать входных строк с нулевым символом в конце. -n
сообщает ему о числовой сортировке, а -k1
учитывает только первое поле при сортировке. awk
:
-vRS = '\ 0'
: установить разделитель входной записи (строки) на \ 0
; vn = $ 1
: установить для переменной n
значение, которое было задано в качестве входных данных для функции; NR == n {}
: запустить это только в строке n
(5 в первом примере); sub (/ ^ [^] * /, "", $ 0); print
: замените все непробельные символы с начала строки ( ^ [^] *
) до первого пробела и выведите результат Вам необходимо установить java -8 или более раннюю версию в качестве версии java по умолчанию для работы с tomcat в archlinux. Следуйте руководству Arch Wiki, чтобы установить правильную версию.https://wiki.archlinux.org/index.php/Java#Officially_supported_packages
Для этого запустите:
sudo archlinux-java set java-8-openjdk