Ingin memperbaiki pertanyaan ini? Perbarui pertanyaan agar sesuai dengan topik untuk Ask Ubuntu.
Ditutup 3 tahun yang lalu.
Perbaiki pertanyaan ini
Saya memiliki folder dengan 1000 file.
Nama mereka seperti di bawah ini
…P1_A1 _R2….
…P1_A2 _R2….
…P1_A3 _R2….
yang hanya bagian tengahnya yang penting seperti yang disorot
dan saya punya kunci .txt
file di folder yang sama dengan info ini
Sample P R Col
1 1 A 1
2 1 A 2
3 1 A 3
Saya ingin memeriksa .txt
file dan ubah nama file yang sesuai atau simpan dengan nama di folder lain. misalnya
.._P1_A1_..
harus sample1
karena ketika saya melihat .txt
file , ini
Sample P R Col
1 1 A 1
untuk
.._P1_A2_..
harus sample2
karena ketika saya melihat .txt
file , ini
Sample P R Col
2 1 A 2
Jawaban yang Diterima:
Jika kita dapat dengan aman berasumsi bahwa semua nama Anda unik, maksud saya hanya ada satu file yang namanya berisi _P1_A1
, hanya satu dengan _P1_A2
dll, Anda dapat melakukan ini:
$ awk 'NR>1{print "mv *_P"$2"_"$3$4"* sample"$1}' key.txt
mv *_P1_A1* sample1
mv *_P1_A2* sample2
mv *_P1_A3* sample3
Awk membaca input baris demi baris dan membaginya menjadi beberapa bidang pada spasi putih. Jadi kolom pertama adalah $1
, $2
yang kedua dll. Di sini, kami memproses file kunci dan mencetak mv
yang benar perintah dengan membangunnya dari bidang file.
Jika Anda yakin mv
perintah yang dicetak sudah benar, Anda dapat menjalankannya dengan:
awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt