Jestem początkującym użytkownikiem Linuksa i próbuję wysłać długą listę plików z jednego komputera na drugi. Lista argumentów jest za długa, więc używam find. Mam jednak problem z ustawieniem wyrażenia. Czy ktoś może pomóc?
Oto, co zwykle wpisałbym na krótką listę argumentów.
scp ./* phogan@computer/directory...
Oto myślę, że może to przełożyć się na find.
scp find . -name "*" phogan@computer/directory...
Może mógłbym użyć rurki? Wszelkie sugestie mogłyby pomóc. Z góry dziękuję.
Możesz to zrobić za pomocą jednego polecenia
scp
.scp
:Pamiętaj, aby umieścić
find
polecenie między znakami wstecznymi „ a nie pojedynczymi cudzysłowami ” .źródło
scp `find <path> -name <expression>` user@host:<path_where_to_copy>
-r
scp -r
służy do rekursji pojedynczego wpisu (katalogu), a nie do wielu wpisów (wielu plików).źródło
grep -l pattern *
sugerowałbym
Zauważ, że to rozwiązanie pozwala uniknąć nazw plików w wierszu poleceń, gdzie można je interpretować jako argumenty wiersza poleceń.
Inną rzeczą, na którą należy zwrócić uwagę, jest to, że nazwy plików mogą zawierać spacje. Oznacza to, że pętla for w bash może mieć trudności z listą nazw plików.
źródło