Kopiuj pliki i katalogi bez zawartości plików

18

Czy istnieje sposób na skopiowanie struktury katalogów z plikami, ale bez ich zawartości. Mam na myśli, że chcę dokładnie te same katalogi z nazwami plików, ale pozostawiając je puste / puste. Mam kilka przykładowych aplikacji w jakimś języku programowania i chcę je przepisać według własnego stylu, ale zachowując sposób, w jaki były zorganizowane w plikach.

Byłbym wdzięczny za wszelką pomoc.

dagi12
źródło

Odpowiedzi:

36

Od man cp

--attributes-only nie kopiuje danych pliku, tylko atrybuty

Więc jeśli chcesz skopiować wszystkie foldery i pliki, które się w nim znajdują somedirectory

robić cp -R --attributes-only somedirectory destinationdirectory

Sergiy Kolodyazhnyy
źródło
Właśnie tego potrzebuję. Dziękuję Ci bardzo.
dagi12
4
+1, ponieważ nie sądziłem, że ktoś już to zaimplementował - naprawdę zaskoczony.
mgarciaisaia
@mgarciaisaia Byłem tak zaskoczony jak ty, kiedy sprawdziłem dziś stronę podręcznika =)
Sergiy Kolodyazhnyy
10

Fajnie, że Ubuntu cpma tę funkcję, ale jeśli powinieneś znaleźć się na komputerze, który jej nie ma ( cpna przykład styl BSD , więc OS X też nie), bardzo łatwo jest to zrobić find. Oto dwuwarstwowa (dla czytelności):

% cd original_dir
% find . -type d -exec mkdir -p ../copy_dir/{} \;
% find . -type f -exec touch ../copy_dir/{} \;

Jeśli copy_dirjuż istnieje, możesz pominąć -pargument, mkdirponieważ findbędzie on przechodził przez drzewo katalogów z góry na dół. W przypadku dużych zadań możesz ogolić kolejną milisekundę, kończąc polecenia za pomocą +zamiast zamiast, \;jeśli findto obsługuje (prawdopodobnie tak jest).

Edycja: powyższe polecenia zaniedbały obsługę dowiązań symbolicznych, które można skopiować za pomocą trzeciego uruchomienia find( nie kończ tego za pomocą +):

% find . -type l -exec cp -R {} ../copy_dir/{} \;
Alexis
źródło