Как удалить все файлы, которые не созданы today

Да, это очень возможно. Я использую сценарий Python для этой задачи в моем браузере caja . Я воспроизвожу здесь сценарий, заменяя caja на nemo . Надеюсь, он будет напрямую работать с nemo без каких-либо дальнейших изменений.

#!/usr/bin/env python3
import subprocess
import time
import sys

get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
def run(cmd):
    subprocess.call(["/bin/bash", "-c", cmd])

try:
    arg = sys.argv[1]
except:
    arg = ""

try:
    pid = get("pidof nemo").strip()
except subprocess.CalledProcessError:
    run("nemo "+arg)
else:
    w = [l.split() for l in get("wmctrl -lp").splitlines() if pid in l][-1]
    w_id = w[0]   
    if len( [l for l in get("xprop -id "+w_id).splitlines() if all(
        ["_NET_WM_WINDOW_TYPE(ATOM)" in l, "_TYPE_NORMAL" in l])]) != 0:
        run("wmctrl -ia "+w[0])
        run("xdotool key Control_L+t")
        if arg != "":
            run("xdotool key Control_L+l")
            time.sleep(0.2)
            run("xdotool type "+arg)
            time.sleep(0.01*len(arg))
            run("xdotool key Return")
    else:
        run("nemo "+arg)

Сохраните этот сценарий как nemo-tab.py в вашем каталоге ~ / bin или в любом другом каталоге, который есть на вашем пути. Сделайте его исполняемым. Затем, когда вы запустите этот сценарий, он откроет новую вкладку в любом запущенном браузере nemo или запустит новый браузер, если ни один экземпляр не запущен. Вы запускаете его следующим образом:

nemo-tab.py "~/Documents"

Теперь, в вашем случае, вы можете выполнить команду пять раз в сценарии bash, чтобы загрузить экземпляр nemo с 5 начальными вкладками:

#!/bin/bash
nemo-tab.py "~/Documents"
nemo-tab.py "~/Desktop"
nemo-tab.py "~/media/data"
nemo-tab.py "~/Videos"
nemo-tab.py "~/Pictures"

Обратите внимание, что вам понадобится для установки xdotool и wmctrl :

sudo apt-get install xdotool wmctrl

Источник скрипта Python: https://askubuntu.com/questions/628084/what-is-the-command-to -open-a-specific-directory-in-a-new-tab-in-nautilus

1
02.05.2018, 17:31
4 ответа
find. -type f -mtime +0 -exec rm -f {} +

или

find. -type f ! -mtime -1 -exec rm -f {} +

Удалил бы обычные файлы, содержимое которых последний раз изменялось более 24 часов назад(-mtime +0означает :чей возраст в днях (округляется до целого числа, дни равны 24 часам, или 86400 Длительность секунды эпохи Unix )строго больше 0 ).

Некоторые реализации findимеют предикат -delete, который можно использовать вместо -exec rm -f {} +, что сделает его более безопасным и эффективным.

Для файлов, которые были изменены ранее, чем сегодня 00 :00 :00, с GNU findвы можете добавить предикат -daystart. Это будет включать в себя файлы, которые последний раз изменялись вчера, даже если менее 24 часов назад.

В некоторых реализациях findвы также можете:

find. ! -newermt 00:00:00 -delete

Для удаления файлов, которые последний раз изменялись до (или ровно )00 :00 :00 сегодня.

6
27.01.2020, 23:12

find имеет параметр -notили !, который отменяет предыдущий, и -deleteдля удаления файлов:

find. ! -mtime -1 -type f -delete

Обратите внимание, что -notне соответствует стандарту POSIX

0
27.01.2020, 23:12

Использование zsh, либо изначально, либо черезzsh -c "...":

rm -f /path/to/folder/*(.m+0)     # for that directory only

rm -f /path/to/folder/**/*(.m+0)  # recursively

Скобки (... )создают zsh "квалификатор glob" . Внутри точка .указывает простые файлы (, аналогичные find -type f), а m+0требует, чтобы время модификации файла было строго больше нуля дней назад, после усечения до целых дней — 23. часы 0 дней; 25 часов будет 1 день.

Чтобы еще больше соответствовать поведению findпо умолчанию при поиске/сопоставлении «скрытых» файлов (, которые начинаются с точки ), добавьте квалификатор заглавной D:

rm -f /path/to/folder/*(D.m+0)     # for that directory only

rm -f /path/to/folder/**/*(D.m+0)  # recursively
1
27.01.2020, 23:12

Когда количество старых файлов больше, чем за день, я делаю следующее, чтобы быть тщательным. Получить количество файлов в день:

$ find. -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c
# Output:
  42315 2020-09-29
  42315 2020-09-30
  42315 2020-10-01
  42315 2020-10-02
  42315 2020-10-03
  42315 2020-10-04
  42315 2020-10-05
   2275 2020-10-06

И удалить все файлы старше текущего дня:

$ find. -mindepth 1 -type f -mtime +0 | xargs /bin/rm -f
## Now to check the count again.
$ find. -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c
   2275 2020-10-06

Не знаю почему, но я обнаружил, что использование -exec rmзанимает много времени, а конвейер xargsбыстрее.

0
06.10.2020, 03:31

Теги

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