Linux: переместить пакет файлов и переименовать?

#bash #rename #mv

#bash #переименовать #mv

Вопрос:

В настоящее время я пытаюсь переместить и переименовать пакет файлов. Следующий for цикл перемещает файлы .jpeg в папку каждого объекта ( subjects.txt это просто текстовый файл, содержащий столбец идентификаторов):

 for i in `awk '{print $1}' data/subjects.txt`; do find data/ -name ${i}*_img.jpeg | xargs -I file cp file data/${i}/ ; done
 

Однако переименование каждого файла в «img.jpeg » до сих пор не сработало:

 for i in `awk '{print $1}' data/subjects.txt`; do find data/ -name ${i}*_img.jpeg | xargs -I file cp file data/${i}/img.jpeg ; done
 

Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения!

Я хотел бы добиться следующего:

 data/subject_1/img.jpeg
data/subject_2/img.jpeg
data/subject_3/img.jpeg
 

Комментарии:

1. Когда вы хотите посмотреть, что xargs пытается сделать, перейдите cp в echo cp . Сначала после отладки без xargs команды посмотрите, что find найдено.

2. Если вы не хотите объединять find data -name *img.jpeg с subjects.txt in one awk , измените порядок, чтобы вызвать find один раз.