GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menyalurkan output dari grep ke cp?

Ini bekerja untuk saya ketika mencari file dengan tanggal tertentu:

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

Untuk menyalin file ke direktori grep yang ditemukan, gunakan -printf untuk menampilkan direktori dan -i untuk menempatkan argumen perintah dari xarg (setelah pipa)

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

ini menyalin copyFile.txt ke semua direktori (dalam ./) yang berisi "nama file"


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

Penjelasan:

  • grep -l opsi untuk menampilkan nama file saja
  • xargs untuk mengonversi daftar file dari masukan standar ke argumen baris perintah
  • cp -t opsi untuk menentukan direktori target (dan menghindari penggunaan placeholder)

Anda memerlukan xargs dengan placeholder opsi:

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

biasanya jika Anda menggunakan xargs , itu akan menempatkan keluaran setelah perintah, dengan placeholder ('{}' dalam hal ini), Anda dapat memilih lokasi penyisipannya, bahkan berkali-kali.


Linux
  1. Cara memahami keluaran warna

  2. Bagaimana cara saya grep secara rekursif?

  3. Bagaimana cara mem-pipe atau mengarahkan output dari curl -v?

  1. Bagaimana cara mengekstrak waktu durasi dari keluaran ffmpeg?

  2. Bagaimana saya bisa mengecualikan direktori dari grep -R?

  3. Bagaimana cara menggabungkan beberapa baris keluaran menjadi satu baris?

  1. Bagaimana Cara Memulai Grep Multi-utas Di Terminal?

  2. Cara grep \n dalam file

  3. Cara grep keluaran ps dengan header