GNU/Linux >> Znalost Linux >  >> Linux

Jak převést výstup z grep do cp?

Toto mi fungovalo při hledání souborů s konkrétním datem:

 ls | grep '2018-08-22' | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/

Chcete-li zkopírovat soubory do nalezených adresářů grep, použijte -printf pro výstupní adresáře a -i umístěte argument příkazu z xarg (za roura)

find ./ -name 'filename.*' -print '%h\n' | xargs -i cp copyFile.txt {}

to zkopíruje copyFile.txt do všech adresářů (v ./) obsahujících "filename"


grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/

Vysvětlení:

  • grep -l možnost pro výstup pouze názvů souborů
  • xargs pro převod seznamu souborů ze standardního vstupu na argumenty příkazového řádku
  • cp -t možnost zadat cílový adresář (a vyhnout se použití zástupných symbolů)

potřebujete xargs pomocí zástupného symbolu možnost:

grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/

normálně, pokud používáte xargs , umístí výstup za příkaz se zástupným symbolem ('{}' v tomto případě) si můžete vybrat umístění, kam se vloží, a to i vícekrát.


Linux
  1. Jak získat návratovou hodnotu z CHILD PROCESS?

  2. Jak zastavit sed ukládání do vyrovnávací paměti?

  3. Jak převést potrubí /dev/urandom do linuxového zvukového výstupu?

  1. Jak získat výstup z gdb.execute v PythonGDB (GDB 7.1)?

  2. Jak zřetězit více řádků výstupu do jednoho řádku?

  3. Jak mohu odfiltrovat jedinečné výsledky z výstupu grep?

  1. Jak zvýraznit slovo ve výstupu „kočka“?

  2. Jak spustit vícevláknový Grep v terminálu?

  3. Jak se popasovat s barevným výstupem