Изменить права доступа к файлу в zip-архиве без распаковки

find /volume1/photoTest -type d -name eaDir_tmp -prune \
    -exec sh -c 'rsync -a "$1"/ "${1%/*}/@eaDir"' sh {} ';' \
    -o -type d -name @eaDir -prune

Это будет искать все каталоги, имя которых eaDir_tmpв или ниже /volume1/photoTest. Для каждого такого каталога будет выполняться следующая команда:

rsync -a "$1"/ "${1%/*}/@eaDir"

где $1— путь к найденному каталогу. Подстановка параметра ${1%/*}удалит последний компонент имени пути, превратив, например,. /volume1/photoTest/folderA/eaDir_tmpв /volume1/photoTest/folderA(, вы также можете использовать"$( dirname "$1" )").

Мы удаляем все найденные каталоги eaDir_tmpи @eaDirиз списка поиска, когда находим их, не позволяя findвойти в них. Это делается с помощью -prune.


С find, принимающим-execdir:

find /volume1/photoTest -type d -name eaDir_tmp -prune \
    -execdir rsync -a eaDir_tmp/ @eaDir ';' \
    -o -type d -name @eaDir -prune

Связанные:


Использованиеzsh:

for dirpath in /volume1/photoTest/*/eaDir_tmp(/DN); do
    rsync -a "$dirpath"/ "$dirpath:h/@eaDir"
done

Использованиеbash:

shopt -s dotglob nullglob
for dirpath in /volume1/photoTest/*/eaDir_tmp/; do
    rsync -a "$dirpath"/ "$(dirname "$dirpath")/@eaDir"
done
1
08.06.2020, 23:40
0 ответов

Теги

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