Questo ha funzionato per me durante la ricerca di file con una data specifica:
ls | grep '2018-08-22' | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
Per copiare i file nelle directory trovate da grep, usa -printf nelle directory di output e -i per posizionare l'argomento del comando da xarg (dopo la pipe)
find ./ -name 'filename.*' -print '%h\n' | xargs -i cp copyFile.txt {}
questo copia copyFile.txt in tutte le directory (in ./) che contengono "filename"
grep -l -r "TWL" --exclude=*.csv* | xargs cp -t ~/data/lidar/tmp-ajp2/
Spiegazione:
- grep
-l
opzione per visualizzare solo i nomi dei file - xargs per convertire l'elenco dei file dall'input standard agli argomenti della riga di comando
- cp
-t
opzione per specificare la directory di destinazione (ed evitare l'uso di segnaposto)
hai bisogno di xargs con il segnaposto opzione:
grep -r "TWL" --exclude=*.csv* | xargs -I '{}' cp '{}' ~/data/lidar/tmp-ajp2/
normalmente se usi xargs
, inserirà l'output dopo il comando, con il segnaposto ('{}'
in questo caso), puoi scegliere la posizione in cui viene inserito, anche più volte.