Мені потрібно створити скрипт, який відображає файли в тому ж порядку, що і папка завантажень за замовчуванням у доці, упорядкована за датою додавання, найновішою. Я не можу знайти варіант у ls
.
Будь-який інший спосіб це зробити?
Мені потрібно створити скрипт, який відображає файли в тому ж порядку, що і папка завантажень за замовчуванням у доці, упорядкована за датою додавання, найновішою. Я не можу знайти варіант у ls
.
Будь-який інший спосіб це зробити?
Відповіді:
Простіше (швидше) рішення:
mdls -name kMDItemFSName -name kMDItemDateAdded -raw * | \
xargs -0 -I {} echo {} | \
sed 'N;s/\n/ /' | \
sort
Додана дата зберігається як елемент метаданих, kMDItemDateAdded
і mdls
команда викриє дані для кожного файлу, переданого як аргумент.
Отже, щоб скинути дату, додану для всіх файлів у завантаженнях у будь-якому довільному порядку *, розширюється вашою оболонкою, ви можете:
mdls -name kMDItemDateAdded ~ / Завантаження / *
Вам потрібно буде зламати разом комбінацію знаходження та sed / awk / perl / що б не було, щоб зібрати заміну, ls
але, можливо, mdfind може бути викликаний вашим сценарієм, а не потребувати винагороди ls
та розбору цього виводу.
Ну, як зазвичай, після написання питання я розпочинаю копати вміст метаданих у файлах і закінчую писати це:
ls -a | \
grep -v '^\.$\|^\.\.$' | \
xargs -I {} mdls -name kMDItemFSName -name kMDItemDateAdded {} | \
sed 'N;s/\n//' | grep -v '(null)' | \
awk '{print $3 " " $4 " " substr($0,index($0,$7))}' | \
sort -r
В основному це: 1. список усіх файлів, 2. фільтрування. і .. 3. отримує ім'я та дату, один рядок за іншим 4. об'єднує кожні два рядки в 1 рядок 5. витягує дату, час та ім'я 6. сортує їх у зворотному порядку (оскільки дата передує, вона сортується за дата, час)
Сподіваюся, це допоможе комусь іншому! :)
@bmike насправді сайт наклав мені обмеження відповідати на моє запитання лише через 8 годин після публікації мого запитання через мою відсутність репутації: D
ls -A
замість того, -a
щоб не потрібно grep -v
для .
і ..
.
людина лс
-U Use time of file creation, instead of last modification for sorting (-t) or long output (-l).