Хранить старые файлы и каталоги

Ошибка, которую вы получаете, означает, что в текущем каталоге нет скрытого файла или каталога. .[!.]* расширяется, чтобы соответствовать любому файлу или каталогу, имя которого начинается с «.» за которым следует что угодно, кроме «.»; если он ничему не соответствует, он остается как есть по умолчанию. Таким образом, в вашем случае du запускается с .[!.]* в качестве аргумента вместо реальных имен файлов или каталогов и выдает сообщение об ошибке, которое вы видите.

Вы можете включить nullglob, чтобы изменить поведение оболочки здесь:

shopt -s nullglob

Тогда оболочка удалит шаблоны, которые ничему не соответствуют, и du сообщит об использовании текущего каталога, если ничего не соответствует (это его поведение по умолчанию при отсутствии аргументов).

Чтобы достичь того, что вам нужно, в Bash вы должны вместо этого сделать следующее:

du -sh .[!.]*/ */

Это расширится на все каталоги в текущем каталоге, включая скрытые. Если nullglob не включен, он все равно будет выдавать сообщения об ошибках, но вы увидите размеры всех соответствующих каталогов.

1
05.07.2017, 13:35
2 ответа
cd "$dir" && \
find. -type d ! -name. -mtime +"$days" \
  ! -exec sh -c 'printf %s\\n "${1/./$PWD}" | grep -qFf /users/nordic/tokeep' {} {} \; \
  -print0 -prune -o -type f -mtime +"$days" -delete |\
xargs -r0 rm -r

Работа

  • При успешном cdпопадании в реж. чье имя хранится в $dirмы
  • Запустите команду find, которая жонглирует между следующими :
    • Дляdirectory:
      • Это не текущий каталог, и он старше, чем $days, затем отправьте его имя в xargs на другой стороне канала, если он не найден в файле tokeep. Также не входите в этот каталог, так как он помечен для очистки.
    • OTW, для fileудалите их, если они старше $дней.
  • В xargsбудут переданы старые каталоги, которые будут удалены.
0
28.01.2020, 00:52

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

И начните удалять каталоги/или файлы вниз по дереву файлов, я объясню лучше:

удалить в таком порядке:

/dir1/dir2/file2
/dir1/dir2
/dir1/file1
/dir1
0
28.01.2020, 00:52

Теги

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