Переименование сотен непустых каталогов

Со страницы руководства rsync:

To give new files the destination-default permissions (while leaving existing files unchanged), make sure that the --perms option is off and use --chmod=ugo=rwX (which ensures that all non-masked bits get enabled).

Итак...

rsync --copy-links --recursive --times --group --no-perms --chmod=ugo=rwX afile afile2

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

Если исходные файлы имеют разрешения, скажем, 777...

rsync --copy-links --recursive --times --group --no-perms --chmod=ugo=rw,-X afile afile2

... удалит флаг исполняемого файла.

2
17.07.2019, 21:35
2 ответа

Просто переименовать их?

С утилитой -linux переименовать:

rename -v webapp new_webapp /tmp/user*/app/webapp

С поиском (переменной глубины):

find /tmp -depth -type d -name "webapp" -execdir mv webapp new_webapp \;

Цикл for с mv:

for path in /tmp/user*/app/
do
    mv -v "$path"/webapp "$path"/new_webapp
done

Ни один из них не охватывает какие-либо особые случаи, например, что произойдет, если новое _веб-приложение уже существует (проверка ошибок/разрешение конфликтов ), веб-приложение на самом деле является точкой монтирования или символической ссылкой вместо фактического каталога или другим вещи, относящиеся к этой структуре каталогов, -которую вы разрабатываете.

Таким образом, это может быть намного сложнее, чем простое переименование, это зависит от обстоятельств.

Но если вы спрашивали об этом, из вашего вопроса не было ясности.

4
27.01.2020, 21:55

Это должно работать:

find /tmp -depth -type d -name webapp -exec sh -c 'mv "${0}" "${0%/webapp}/new_webapp"' {} \;
1
27.01.2020, 21:55

Теги

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