как я могу изменить имя многих файлов в папке [закрыто]

У меня есть папка с 1000 файлами.

Их имя показано ниже

... P1_A1 _R2 ....

... P1_A2 _R2 ....

... P1_A3 _R2 ....

, где важна только середина, как выделено

, и у меня есть файл ключа .txt в той же папке с этой информацией

Sample  P   R   Col
    1   1   A   1
    2   1   A   2
    3   1   A   3

Я хочу проверить файл .txt и соответственно изменить имя файла или сохранить с именем в другой папке. например,

.._ P1_A1_ ..

должно быть sample1 , потому что, когда я смотрю на файл .txt , это

Sample  P   R   Col
    1   1   A   1

для .._ P1_A2_ ..

должно быть sample2 , потому что когда я смотрю на файл .txt , это

Sample  P   R   Col
    2   1   A   2
1
задан 7 December 2016 в 15:36

1 ответ

Если мы можем безопасно предположить, что все Ваши имена уникальны, я подразумеваю, что существует только один файл, имя которого содержит _P1_A1, только один с _P1_A2 и т.д., можно сделать это:

$ 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 читает свой вход линию за линией и разделяет его на поля на пробеле. Таким образом, первое поле $1, второе $2 и т.д. Здесь, мы обрабатываем файл ключей и печатаем корректное mv команда путем создания его из полей файла.

, Если Вы уверены mv, распечатанные команды корректны, можно выполнить их с:

awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt
4
ответ дан 3 December 2019 в 06:56

Другие вопросы по тегам:

Похожие вопросы: