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.