it-swarm.com.de

Suchen und kopieren Sie Dateien

Warum kopiert das Folgende die Dateien nicht in den Zielordner?

# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \;

cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
114
shantanuo

Wenn Sie die gefundenen Dateien nach/home/shantanu/tosend kopieren möchten, haben Sie die Reihenfolge der Argumente für cp umgekehrt:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend  \;

Hinweis: Der Befehl find verwendet {} als Platzhalter für die übereinstimmende Datei

253
malcolmpdx

ich stand vor einem Problem wie diesem ...

Tatsächlich können Sie auf zwei Arten die Ausgabe des Befehls find im Befehl copy verarbeiten

  1. Wenn die Ausgabe des Befehls find kein Leerzeichen enthält, d. H. Wenn der Dateiname kein Leerzeichen enthält, können Sie den folgenden Befehl verwenden:

    Syntax: find <Path> <Conditions> | xargs cp -t <copy file path>

    Beispiel: find -mtime -1 -type f | xargs cp -t inner/

  2. In den meisten Fällen können unsere Produktionsdatendateien jedoch Speicherplatz enthalten. Die meiste Zeit ist der folgende Befehl sicherer:

    Syntax: find <path> <condition> -exec cp '{}' <copy path> \;

    Beispiel find -mtime -1 -type f -exec cp '{}' inner/ \;

Im zweiten Beispiel wird der letzte Teil, d. H. Das Semikolon, ebenfalls als Teil des Befehls find betrachtet, der vor dem Drücken der Eingabetaste ausgeblendet werden sollte. Andernfalls erhalten Sie eine solche Fehlermeldung

find: missing argument to `-exec'

In Ihrem Fall Befehlssyntax ist falsch, um die Suchdatei nach /home/shantanu/tosend Zu kopieren. Der folgende Befehl funktioniert:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp  {} /home/shantanu/tosend \;
29
Thiyagu ATR

Sie müssen cp -t /home/shantanu/tosend Verwenden, um anzugeben, dass das Argument das Zielverzeichnis und keine Quelle ist. Sie können es dann in -exec ... + Ändern, damit cp so viele Dateien wie möglich auf einmal kopiert.