Mam podobną sturecture pliku:
/home/dave/documents/static/
/home/static/
/home/dave/pictures/static/
/home/dave/otherfolders/
...
Chcę skopiować z tego katalogu tylko foldery o nazwie static
. Te foldery mogą być również podfolderami. I powinien tworzyć tę samą strukturę w nowym folderze, który miał wcześniej. To znaczy:
cp -r /home/* /otherhome/
Próbowałem tego:
find home/ -name 'static' -exec cp -r '{}/*' 'otherhome/{}' ';'
Ale dostaję błędy, które /home/dave/documents/static/*
i inne statyczne foldery nie istnieją. Chyba nie mogę połączyć nazw plików /*
. Masz pomysł, jak to zrobić?
static
folderuotherhome
?/otherhome/dave/documents/static/
Innymi folderami statycznymi i niczym więcej.Odpowiedzi:
Problem polega na tym, że te katalogi nie istnieją podczas próby ich skopiowania. Najpierw musisz je zrobić.
Musimy usunąć
home/
pierwotne nazwy katalogów, a następnie utworzyć nową hierarchię folderów (mkdir -p
). Następnie rekurencyjnie kopiujemy zawartość, ale musimy również usunąćstatic
z końca nowego katalogu, aby nie tworzyćstatic/static
.Może być ładniejszy sposób na osiągnięcie tego.
Przykład przed i po:
źródło