Bei der Verwendung von LFTP löst die Option find und -exec einen Fehler aus

1008
user2023507

Was ist los mit dem folgenden LFTP-Befehl? Dort Dateien auf dem Server. Ich versuche, ihre Namen ohne Pfad zu erhalten (wie ./zB) Nur Dateinamen.

lftp -u user,password -e 'find -exec basename {} \; ;bye' ftp.mycompany.com/Courses >/opt/output/downloaded/course_list 

Ich erhalte folgende Fehlermeldung -

cd ok, cwd=/Courses find: invalid option -- 'e' Usage: find [-d #] dir 
1

1 Antwort auf die Frage

1
Gombai Sándor

Der Fehler zeigt genau, welcher Parameter find beginnen muss: Es ist das Verzeichnis, unter dem gesucht werden muss. Eigentlich ist dies der einzige Parameter, der da sein muss, der Rest ist für Sie.

Andererseits müssen Sie nicht basename aufrufen, um die Verzeichnisse aus der Ausgabe zu entfernen. Mit -printf und den entsprechenden Sequenzen können Sie jedes Stück der Eigenschaften der gefundenen Dateien drucken. Mann finden wird helfen.

Es ist ein FTP-Server. Wahrscheinlich anderes Paket finden. Gibt es einen Ort, an dem ich die Syntax von find sehen kann? Ich habe alle Kombinationen ausprobiert, die ich online gefunden habe. Keine Arbeit. Ich habe dies versucht - `lftp -u Benutzer, Kennwort -e 'find -d.; ; bye "ftp.mycompany.com/Courses> / opt / output / downloads / course_list", dann heißt es "find:. - keine Zahl " user2023507 vor 8 Jahren 0
Wenn ich "-e" gebe, finde ich. tschüss '`dann funktioniert es. Also habe ich `-e 'find hinzugefügt. -exec basename {} \; tschüss "; Dann werden alle Token als getrenntes Verzeichnis als Verzeichnisse verwendet. Sagt -exec zugegriffen; Basisname zugegriffen; usw., user2023507 vor 8 Jahren 0
-d # würde wahrscheinlich in der Tiefe des Verzeichnisses von # Ebenen suchen, das können Sie hier einfach vergessen. Die einfachste Möglichkeit, find auszuführen, ist "find". welche den Inhalt des aktuellen Verzeichnisses auflistet. Gombai Sándor vor 8 Jahren 0
Ich habe oben vorgeschlagen, den Aufruf des Basisnamens und die Verwendung von -print zu vergessen. Um genau zu sein -printf "% f \ n" Aber ich fürchte, dein Problem ist schwerwiegender. Sieht aus, als hätten Sie einen vereinfachten Fund, der kaum weiß, was ein normaler Fund wäre. Gombai Sándor vor 8 Jahren 0
gleiche Sache..! Wenn ich "-e" finde, finde ich. -printf "% f \ n"; tschüss``, sagt `find: Zugriff fehlgeschlagen: 550 Verzeichnis konnte nicht geändert werden. (/ Kurse / -printf) ` user2023507 vor 8 Jahren 0
Dieser Befund ist so verstümmelt, dass er für die Firmware klein ist. Das wird nicht funktionieren. Sie können jedoch die Dateien mit den Pfaden in Ihre Ausgabedatei / -pipe auflisten und filtern, um nur die Namen zu enthalten. Nur ein Sed / Awk-Einliner. Gombai Sándor vor 8 Jahren 1
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/36297/discussion-between-user2023507-and-gombai-sandor). user2023507 vor 8 Jahren 0