Czy można uruchomić komendę bash, która zastąpi wszystkie pliki w jednej strukturze katalogów wszystkimi plikami w innym. Na przykład, jeśli mam te dwie struktury katalogów:
dest
dest/A
dest/A/B
dest/A/B/file-1
dest/A/B/file-2
dest/A/B/file-3
dest/A/B/C
dest/A/B/C/file-4
dest/A/B/C/file-5
patch/
patch/A
patch/A/B
patch/A/B/file-2
patch/A/B/C
patch/A/B/C/file-6
... to czy mogę uruchomić jakieś polecenie find / copy / xargs / sed piped, które skopiuje każdy plik z katalogu poprawki do odpowiedniej lokalizacji w katalogu docelowym? Gdybym tylko cp -r patch/A/B dest/A/B
wtedy będę tracić pliki dest/A/B/file-1
i dest/A/B/file-3
etc.
Edytować:
Próbowałem sobie np Uruchamianie poleceń find -type f | xargs -I {} cp {} ...
, ale nie jestem bardzo doświadczonych z poleceń powłoki i nic nie działało (the ...
na końcu polecenia jest przeważnie były eksperymenty z sed przekształcić filepath zastępując ./
z dest/
).
źródło
cp -r patch/A/* ...
. Nie rozumiem jednak, dlaczego to działa z globem plików. To, co się dzieje, różni się w porównaniu z tymcp -r patch/A dest/A
. Czy symbol wieloznaczny jest interpretowany jako „powtarzaj przez każdy podkatalog, ale tylko kopiuj pliki”?cp -r patch/A dest/
z tymi samymi wynikami (pamiętaj tylko, aby dodać końcowy ukośnik do miejsca docelowego, aby oznaczyć jego status jako katalogu). Edytowano zgodnie z powyższą metodą „najlepszych praktyk”.