Как ударить метки времени файла на 3 месяца (для дерева каталогов)?

Что звонило, менеджер по оформлению не то, что Вы думаете, что это, и исследование, которое не решит Ваши проблемы.

Вы, кажется, намекаете на конкретный вопрос:

наличие проблем, прикрепляющихся ноутбук, пытаясь работать на двух внешних мониторах

Но необходимо будет быть более явными; это могло быть проблемой драйвера ядра или проблемой Xorg.

Это могла бы также быть проблема KDE, но KDE не действительно ответственен за управление аппаратными средствами; это - слой сверху X-сервера. Однако это действительно настраивает X-сервер (и реконфигурировало через интерфейс "Systems Settings"). В этом случае это может быть столь же просто как просто тонкая настройка X самостоятельно, но снова, необходимо будет быть конкретны относительно того, что проблемы и каковы аппаратные средства.

3
13.04.2017, 15:36
3 ответа

Предполагая, что ваши находятся в системе Linux или, по крайней мере, у вас есть GNU Touch и GNU дата , вы можете сделать (в Bash; ZSH То же самое, но не нуждается в Shopt Globstar ):

$ shopt globstar
$ for f in **; do 
    touch -d "$(date -d "$(stat -c '%y' "$f") +3 months")" "$f"
  done

, что, однако, проигнорируют скрытые файлы. Чтобы соответствовать тем, запустить ShopT -S dotglob перед вышеуказанными командами.

Объяснение

  • ShopT -S Globstar : Это устанавливает опцию Bash's Globstar , что означает, что ** будет соответствовать всем файлам и нулю или более каталогам и подкаталам.
  • ShopT -S dotglob : производит * ** ) также соответствует файлам, имена которых начинаются с . .
  • для f в **; делать ...; Сделано : итерации по всем файлам и каталоги , сохраняя их как $ F .
  • Статистика -C '% y' "$ F" : Это текущий отметку времени текущего файла или каталога.
  • Дата -D $ (...) +3 месяцев : Распечатайте дату, которая через три месяца после данной строки (в этом случае эта строка является выходом команды $ F ).

Все вместе, приведенное выше найдет дата модификации каждого файла или каталога в текущей папке (включая все подкаталоги) и устанавливает дату через три месяца после того, как она сейчас.

2
27.01.2020, 21:19

Из описания проблемы, я считаю, что вы ищете инструмент, который может получить время последнего модификации файлов, а затем добавить на него 3 месяца. Вы можете сделать это с Stat + Touch + Некоторые арифметические оценки оболочки. Например, чтобы добавить 90 дней на Файл Timestamp, вы можете написать

touch -d "@$(( $(stat -c '%Y' file) + 90*24*3600 ))" file

, а затем просто цикл по всему файлу , который вам нужно.

1
27.01.2020, 21:19

I будет использовать -EXEC находки - онеленер.

find $HIGHEST_FOLDER -type f -name '*.*' -exec touch -d "$(date -d "$(stat -c '%y' {}) +3 months")" {} \;

Цитата *. * , в противном случае Найти примет файл имена файлов из текущего каталога и сбой.

Наконец, вы должны указать \; , обратное явление, а затем полутока, -EXEC . {} - текущий файл Найти .

Нет -F переключиться на GNU Touch, поэтому ваш пример не работает. Существует также несколько проблем синтаксиса:

в вашем цикле выше, вам необходимо изменить f до $ f:

touch [...] $f

в противном случае он будет искать файл с именем f в текущем каталоге и измените его Дата x раз, где x - количество файлов под $ sirection_folder .

Если вы придерживаетесь Sub Shell ( $ (...) До вашего цикла), вы должны убедиться, что в Sub Shell установлен $ SPALD_FOLDER .

1
27.01.2020, 21:19

Теги

Похожие вопросы