Трассировка вызовов объектов ядра

С помощью zsh из текущего каталога:

for dir (**/*(N/)) {
  files=($dir/*(N.om))
  (($#files > 1)) && echo rm -f -- $files[2,-1]
}

Если вы хотите, чтобы учитывались скрытые каталоги и файлы, добавьте квалификатор глобуса D .

Учитываются только обычные файлы. Если вам нужны другие типы файлов, такие как устройства, сокеты, именованные каналы, или если вы хотите следовать символическим ссылкам, их можно адаптировать с помощью дополнительных квалификаторов glob.

Удалите эхо , чтобы фактически выполнить задачу.

С последними инструментами GNU и оболочкой POSIX:

(export LC_ALL=C
find . -type f -printf '%T@\t%p\0' |
  sort -rzn |
  cut -zf2- |
  gawk -v RS='\0' -v ORS='\0' '
    match($0,/.*\//) && n[substr($0,1,RLENGTH-1)]++' |
  xargs -r0 echo rm -f
)
3
08.06.2015, 14:14
0 ответов

Теги

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