GNU/Linux >> Znalost Linux >  >> Linux

Najděte a zkopírujte soubory

Musíte použít cp -t /home/shantanu/tosend abychom mu řekli, že argument je cílový adresář a ne zdroj. Poté jej můžete změnit na -exec ... + abyste získali cp zkopírovat co nejvíce souborů najednou.


Pokud je vaším záměrem zkopírovat nalezené soubory do /home/shantanu/tosend , máte pořadí argumentů do cp obráceně:

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

Poznámka:find příkaz použijte {} jako zástupný symbol pro odpovídající soubor.


čelil jsem problému podobnému tomuto...

find můžete zpracovat dvěma způsoby výstup příkazu v copy příkaz

  1. Pokud find výstup příkazu neobsahuje žádnou mezeru, tj. pokud název souboru neobsahuje mezeru, můžete použít níže uvedený příkaz:

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

    Příklad:find -mtime -1 -type f | xargs cp -t inner/

  2. Většinu času však naše soubory produkčních dat mohou obsahovat prostor. Takže většinu času níže uvedený příkaz je bezpečnější:

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

    Příklad find -mtime -1 -type f -exec cp '{}' inner/ \;

Ve druhém příkladu je poslední část, tj. středník, také považována za součást find příkaz, který by měl být ukončen před stisknutím tlačítka enter. V opačném případě se zobrazí chyba podobná této

find: missing argument to `-exec'

Ve vašem případě je syntaxe příkazu kopírování chybná za účelem zkopírování nalezeného souboru do /home/shantanu/tosend . Následující příkaz bude fungovat:

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

Linux
  1. Jak najít konfigurační soubory MySQL, PHP a Apache

  2. Jak zjistit počet souborů v adresáři a podadresářích

  3. Jak najdu soubory a součet jejich velikostí?

  1. Najděte soubory a adresáře v Linuxu jako profík

  2. Najděte největší soubory a adresáře v Linuxu

  3. Kopírovat prvních N souborů do jiného adresáře?

  1. Zkopírujte soubory pomocí SCP a Rsync

  2. najít a zkopírovat soubor pomocí Bash

  3. Najít soubory a rozbalit je (s mezerami)