GNU/Linux >> Znalost Linux >  >> Linux

Je možné přenést výsledky FIND do příkazu COPY CP?

Pro cp je málo používaná volba :-t destination -- viz manuálová stránka:

find . -iname "*.SomeExt" | xargs cp -t Directory

Můžete použít | jako níže:

find . -iname "*.SomeExt" | while read line
do
  cp $line DestDir/
done

Odpovědi na vaše otázky:

  • | lze použít k vyřešení tohoto problému. Ale jak je vidět výše, zahrnuje to spoustu kódu. Navíc | vytvoří dva procesy – jeden pro find a další pro cp .

  • Místo toho použijte exec() uvnitř find vyřeší problém v jediném procesu.


Dobrá otázka!

  1. proč nemůžete použít | trubka? není to k čemu to je?

Můžete samozřejmě použít kanál xargs se provádí pro tyto případy:

find . -iname "*.SomeExt" | xargs cp Destination_Directory/
  1. Proč všichni doporučují -exec

-exec je dobré, protože poskytuje větší kontrolu nad tím, co přesně provádíte. Kdykoli dáte pipetu, mohou nastat problémy s rohovými pouzdry:názvy souborů obsahující mezery nebo nové řádky atd.

  1. Jak poznám, kdy použít tento (exec) přes potrubí | ?

Je to opravdu na vás a případů může být mnoho. Použil bych -exec vždy, když je akce k provedení jednoduchá. Nejsem příliš dobrým přítelem xargs , dávám přednost přístupu, ve kterém find výstup je poskytován na while smyčka, například:

while IFS= read -r result
do
    # do things with "$result"
done < <(find ...)

Linux
  1. Linuxový příkaz cp

  2. Jak používat Linuxový příkaz find k hledání souborů

  3. Průvodce linuxovým příkazem „Najít“.

  1. Vytisknout md5součet výsledků příkazu find v Linuxu

  2. Vysvětlení příkazu 'find -mtime'

  3. Zjistěte, jaký proces je na druhém konci potrubí

  1. Najděte čas provedení příkazu nebo procesu v systému Linux

  2. Najděte verzi WordPress z příkazového řádku

  3. Jak přenést výsledky 'najít' do mv v Linuxu