#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 oneawk
, измените порядок, чтобы вызватьfind
один раз.