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

В моем каталоге медиацентра все измененные времена моих папок как-то не являются желаемой датой.

Как я могу изменить все измененные времена основных папок на измененное время новейшего медиа-файла внутри каждой папки?

например:

cd /tmp mkdir test cd test mkdir d1 mkdir d2 touch d1/text1.txt touch d1/movie1.mov touch d2/text2.txt touch d2/movie2.mov touch notthis.file 

теперь я попробовал:

 ls -td *| head -n 1 

но это дает:

 notthis.file 

3 Solutions collect form web for “Как я могу изменить дату, измененную для папки, на последний измененный файл внутри?”

С zsh :

 cd that-dir && touch -r *(D.om[1]) . 

Если вы хотите также рассмотреть файлы в подкаталогах:

 touch -r **/*(D.om[1]) . 

И если вы хотите сделать это для каждого каталога:

 for d (**/*(D/)) touch -r $d/*(D.om[1]) -- $d 

Используя ls(1) чтобы заказать каталог по времени модификации, head(1) чтобы получить первый из файлов, и touch(1) чтобы изменить время модификации вашего целевого каталога, это довольно легко.

Обычно нецелесообразно анализировать вывод ls поскольку он редко необходим и легко поддается специальным символам, однако в этом случае я не могу придумать другой инструмент, который так же легко даст вам файл с последней меткой времени в каталог.

 touch_dir() { dir="$1" touch --reference="$(ls -td "${dir}"/* | head -n 1)" "${dir}" } 

Запустите это с аргументом, который является каталогом, и он должен установить время модификации каталога на последнее время модификации любого файла в каталоге.

Он не сработает, если в каталоге нет файлов (легко протестировать несколько способов), или если последнее имя файла имеет встроенную новую строку – head получит только часть перед новой строкой.

Чтобы обновить многие каталоги, просто запустите его в цикле.

Вы можете установить your_dir метку your_dir каталога для своего последнего измененного файла с этим чудовищем:

 touch -t `ls -ltr --time-style='+%Y%m%d%H%M.%S your_dir' | grep '^-' | tail -1 | awk '{print $6}'` your_dir 

Неясно, что вы подразумеваете под «основными папками», поэтому я не включил рекурсию.

  • howto вход в систему с кредитами LDAP, когда сервер с LDAP отключен
  • Ubuntu 16.04 Драйвер Wi-Fi для Dell Inspiron 3520
  • Запуск действия при подключении определенного тома
  • Sane на Ubuntu 14-04 не распознает сканер Samsung
  • Два контейнера LXC с использованием двух разных физических сетевых интерфейсов
  • Устройство Raid5 имеет меньше пространства, чем ожидалось
  • Как использовать sudo в Fedora?
  • Создание образа Debian с панели запуска Ubuntu
  • Переключить экраны в xorg.conf без перезагрузки X
  • Проблемы с Wi-Fi на Ubuntu 16.04, используя Qualcomm Atheros в Lenovo v510
  • Ubuntu Precise - приостановить клинья GDM - помощь!
  • Interesting Posts

    Использование среднего щелчка мыши для вставки текста вступает в режим вставки

    Окно Xorg / Twm фокусируется только на мыши

    udev: не добавлять события вообще, когда определенное устройство было удалено во время использования

    Опция -F для ls

    Как я могу использовать свои собственные фрагменты, используя yasnippet в Emacs?

    Apache: как получить доступ к файлам с использованием учетных данных запрашивающего пользователя?

    GNU / Linux: автоматическое клонирование системы с разделами, зашифрованными с помощью LUKS + dm-crypt

    Передача параметров в подкоманды в bash

    Значение «target» в определениях виртуальной виртуальной машины virsh.

    SSH-Keygen -i Fails: uudecode не удалось. Что может вызвать это?

    Проблема с установкой свойств python-software

    bash для чтения первого аргумента в качестве входного файла и поиска переменной в другом файле по строкам

    Установите Linux на USB-накопитель, используя один USB-накопитель

    Как переименовать файлы без расширения

    rsync генерирует каталог назначения большего размера, чем источник?

    Linux и Unix - лучшая ОС в мире.