Как копировать файлы при сохранении структуры каталогов?

Можно попробовать:

chmod -R a+rx /etc/sudoers.d
chmod -R u+w /etc/sudoers.d
chmod 0440 /etc/sudoers.d/README

, Как записано здесь: https://www.kubuntuforums.net/showthread.php? 54790-SOLVED-sudo-etc-sudoers-is-mode-0777-should-be-0440/page2& s=c30714d17a797062285f772898ca2f2b

0
задан 15.04.2020, 16:22

3 ответа

Обратите внимание, что значения move mv и copy cp различны и хорошо определены для использования в терминале. mv означает, что файлы больше не будут существовать в старом местоположении, в то время как cp означает, что дубликат сделан в новом местоположении.

Простое решение (обратите внимание, что я использую mv, но вы можете сначала использовать cp, а затем удалить старые файлы, как только вы захотите скопировать):

cp src/com/a1/test/test*.java tests/com/a1/test/

Более элегантно решение (это перемещает файлы, а не копии):

cd src/com/
find . -iname "test*.java" -type d -exec mv {} ../../tests/com/ \;

Если второе решение не работает для вашего конкретного теста, мы можем выполнить итерацию ...

0
ответ дан 15.04.2020, 16:23
  • 1
    Этот doesn' t делают то, что я спросил. Я должен переместить ВСЕ тестовые папки от ВСЕХ sub папок до тестов, сохранив структуру каталогов. – jorisw 15.04.2020, 16:23
  • 2
    Для нахождения всех файлов в " test" папки, выполненные эта команда: find . -type d -name "test" -exec ls -l {} \; Использование эти type -d флаг после точки для поиска только каталогов и эти type -f флаг для файлов. Можно выяснить, как переместить файлы на основе вышеупомянутого ответа. – Camilo Martin 15.04.2020, 16:23

Вам нужно написать сценарий оболочки для этой задачи. Я попробую и прокомментирую строки.

Первая строка здесь - это просто переменная, в которую вы помещаете абсолютный каталог вашего дерева src.

SRCDIR=/dir/where/src/lives

Следующая строка выполняет find. Команда поместит каждый путь к каталогу с именем test в переменную TESTDIRS.

TESTDIRS=$(find $SRCDIR -type d -name test)

Теперь вы перебираете все найденные test каталоги

for dir in $TESTDIRS; do

. Здесь берется фактический путь и удаляется все, включая src. Итак, вы получите структуру для создания нового пути.

  NEWDIR=${dir##*/src}

Теперь создайте новые каталоги.

  mkdir -p tests/$NEWDIR

Переместите старый каталог test во вновь созданное место.

  mv $dir tests/$NEWDIR

конец итерации

done

Насколько я понимаю, это должно быть то, что вы хотите. Но, пожалуйста, сначала проверьте это. Там могут быть некоторые предупреждения и запуск сценария, как это может привести к потере данных.

1
ответ дан 15.04.2020, 16:23

Я использую одну из этих команд, чтобы скопировать все мои файлы jpg и пропустить все файлы db, raw и т. Д. Любой из них должен работать для ваших нужд.

Используя rsync:

 rsync -a --prune-empty-dirs --include '*/' --include '*.jps' --exclude '*'  source/ target/

или find с exec:

find . -name '*.jpg' -exec cp --parents \{\} /target \;
0
ответ дан 15.04.2020, 16:23

Теги

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