Назад | Перейти на главную страницу

Скопировать последний созданный каталог

Я хочу сделать вторую резервную копию из последней созданной резервной копии. Итак, я попробовал команду оболочки:

last='ls -tr | tail -1'
cp -r /path/.../"$last" /path/.../backup/

но он копирует случайную резервную копию.

Он отлично работает с файлами .zip и .tar, но не с папками, так как мне это нужно здесь.

Я искал решение в Google, но не нашел ничего, связанного с этим, надеюсь, вы можете мне помочь.

Также можно использовать имя каталога, например:

2013-09-27-05-22-45

Я часто использую это в своих скриптах или в моей оболочке когда я работаю с каталогами в моем текущем каталоге.

alias lastd='ls -1drt * | tail -1'

Буква d означает только каталоги.

Вы можете использовать его в командной строке оболочки, например:

mkdir some_dir
cd $(lastd)

Я предлагаю использовать здесь "last = 'ls -1tr | tail -1'". Без «1» (единицы) в команде ls возвращает все файлы в вашем каталоге в одной строке.

Попробуйте использовать «u» или «U» вместо «t».

В зависимости от того, как каталог был создан в первую очередь и как он используется, может потребоваться использовать дату / время создания или дату / время последнего доступа.

И будьте осторожны !!!

Если к этим папкам обращаются другие программы / пользователи, у вас всегда будут неожиданные результаты.
(Эти пользователи могут также обновить метку времени в папке!)

Учитывая формат имени каталога, вам, вероятно, лучше просто отсортировать по имени файла:

last = 'ls | хвост -1 '

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

last = 'ls -d [0-9] [0-9] [0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9] - [ 0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9] | хвост -1 '

Это ограничит вывод только теми папками, имя которых имеет правильный макет (4 цифры, тире, 2 цифры, тире, 2 цифры, тире и т. Д.)