Cześć, chcę skopiować wszystkie pliki z wielu podfolderów do jednego folderu.
Myślałem, że mogę załatwić to w ten sposób: cp katalog/katalog_glowny/*/*.jpg katalog/katalog_nowy/
, ale niestety tak to nie działa.
W katalog_glowny znajduje się dość dużo podfolderów i nie chcę z każdego pojedynczo kopiować zawartości. Jak uwzględnić wszystkie podkatalogi w poleceniu?
cp -r src_dir dest_dir
to zadziała, ale skopjuje wszystko jak leci.
W twoim przypadku to co nie działa to podwójna gwiazdka na 2 poziomach zagnieżdzenia: /*/*.jpg
To co może zadziałać to **
czyli /**/*.jpg
Patrz: https://stackoverflow.com/questions/28176590/what-do-double-asterisk-wildcards-mean
U mnie (na zsh) działa:
@0xmarcin: Niestety dwie gwiazdki działają tylko jeden podfolder niżej, jeśli tam jest kolejny katalog zagnieżdżony, to z niego nie kopiuje. Chyba, że ja coś źle robię :/
@Spearhead: Tego też chyba nie potrafię prawidłowo użyć, wpisałem swoje ścieżki i nie bangla.
@Spearhead: Tego też chyba nie potrafię prawidłowo użyć, wpisałem swoje ścieżki i nie bangla.
Powinno banglać, proponuję zatem debugować stopniowo:
- Spróbuj sobie wypisać pliki z gołym findem
find ścieżna -type f -iname "*.jpg"
(filtry dobierz jak ci pasuje) - Jak się uda to spróbuj wypisać komendy jaka się wygenerują z użyciem opcji
-exec
(find . -iname "*.jpeg" -exec echo "cp {} katalog/docelowy " \;
) - Jak wygenerowane komendy wyglądają OK, to spróbuj je wykonać (
find . -iname "*.jpeg" -exec cp "{}" katalog/docelowy \;
)
@Fausto: wygląda na to, że problemem jest wersja find
zainstalowana w BusyBox (czymkolwiek to jest - najwyraźniej nie tylko ty masz ten problem, a tutaj inny, podobny problem z find). U mnie na desktopowym Linuksie z użyciem GNU findutils nie ma problemu z poleceniem:
$ find --version
find (GNU findutils) 4.8.0
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)
Najwyraźniej trzeba by napisać skrypt shella do kopiowania plików.
Jest jedna aplikacja która umożliwiała tą możliwośc. Wujek google pomoże