Chcete zlepšit tuto otázku? Aktualizujte otázku, aby byla aktuální pro Ask Ubuntu.
Zavřeno před 3 lety.
Vylepšete tuto otázku
Mám složku s 1000 soubory.
Jejich jméno je jako níže
…P1_A1 _R2….
…P1_A2 _R2….
…P1_A3 _R2….
který je důležitý pouze uprostřed, jak je zvýrazněno
a mám klíč .txt
soubor ve stejné složce s těmito informacemi
Sample P R Col
1 1 A 1
2 1 A 2
3 1 A 3
Chci zkontrolovat .txt
soubor a odpovídajícím způsobem změňte název souboru nebo uložte pomocí s názvem do jiné složky. například
.._P1_A1_..
by měl být sample1
protože když se podívám na .txt
soubor , je to
Sample P R Col
1 1 A 1
pro
.._P1_A2_..
by měl být sample2
protože když se podívám na .txt
soubor , je to
Sample P R Col
2 1 A 2
Přijatá odpověď:
Pokud můžeme bezpečně předpokládat, že všechna vaše jména jsou jedinečná, myslím tím, že existuje pouze jeden soubor, jehož název obsahuje _P1_A1
, pouze jeden s _P1_A2
atd., můžete to udělat:
$ 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 čte svůj vstupní řádek po řádku a rozděluje jej do polí na mezerách. První pole je tedy $1
, druhý $2
atd. Zde zpracováváme soubor klíčů a tiskneme správný mv
příkaz sestavením z polí souboru.
Pokud jste si jisti, že mv
vytištěné příkazy jsou správné, můžete je spustit pomocí:
awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt