извлекать инкрементные изменения в каталог

Итак, если я правильно понял, вы хотите найти, например, / home / demo / foo / cache для всех значений foo . Поскольку вам не нужно заглядывать в более глубокие уровни, это довольно просто.

(1) Вы можете перечислить их с помощью команды оболочки:

$ cd /home/demo
$ echo */cache

Чтобы защититься от забавных имен, например, начинающихся с тире ( -foo ), лучше использовать ./ * . Кроме того, в bash вы также можете включить в глобус имена, начинающиеся с точки, используя shopt -s dotglob .

(2) Найдите и удалите файлы внутри каталогов (с помощью GNU find -mindepth 1 предотвращает совпадение с самими каталогами):

$ shopt -s dotglob
$ find ./*/cache -mindepth 1                          # list them
./awda2/cache/foo
[...]
$ find ./*/cache -mindepth 1 -delete                  # delete them...

Вы также можете использовать только rm , но с огромным количеством файлов вы можете выйти за пределы допустимой длины командной строки.

$ rm -r ./*/cache/*

(3) Создайте или скопируйте файл для всех из них ( touch создает пустой файл):

$ for dir in ./*/cache ; do touch "$dir/index.html" ; done
$ for dir in ./*/cache ; do cp index.html.model  "$dir/index.html" ; done

(Если есть файл (не каталог) с именем cache , вы получите безобидную ошибку.)

3
29.11.2016, 17:28
1 ответ

Используйте GNU tar в macosx. Он основан на том же источнике. http://macappstore.org/gnu-tar/

-1
27.01.2020, 21:46

Теги

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