Рейтинг:-1

Как изменить имена файлов в Shell Script?

флаг it

У меня есть задача переименовать кучу файлов по их содержимому в row1 colum2 (строка). Файлы не имеют расширений. Я также должен добавить .pdb в качестве расширения для каждого файла.

до сих пор я написал это, и это не работает :(

#! /бин/баш
для f в sequences/*; делать
mv "$f" "($ awk 'NR==1 {print=$2}').pdb";
сделано

Я очень новичок в сценарии Shell и до сих пор не знаю, как его использовать. Любая помощь будет оценена по достоинству!

Someone avatar
флаг my
Похоже на домашнее задание
флаг it
Да, это домашнее задание, хотя лектор не предоставил никаких примеров или материалов, как даже выбирать файлы, использовать awk или вообще что-то делать :)
Someone avatar
флаг my
Это не похоже на проблему, связанную с Ubuntu (возможно, вы используете Ubuntu, но это не проблема с Ubuntu, а проблема со сценариями bash), я не думаю, что на этом веб-сайте будет хороший ответ. , Итак, разместите свой вопрос на [Переполнение стека] (https://stackoverflow.com/) (кстати, этот вопрос по теме)
флаг it
А ладно спасибо!!
Liso avatar
флаг sd
Это проблема университета или его проблемы? Просто спрашиваю..
Will avatar
флаг id
Я знаю, что это мнение, которое не разделяют все… но что не так с вопросом о домашнем задании, когда ОП приложил некоторые усилия, чтобы решить его? Я не хочу делать за людей домашнюю работу, но для меня нормально помочь, если они попытались.
флаг it
Это проблема университета.
Рейтинг:1
флаг hr

Несколько замечаний:

  1. синтаксис для подстановки команд $(команда) нет (команда $)

  2. синтаксис для печати второго поля в awk: распечатать $2 нет печать=$2

  3. вам нужно передать имя файла в качестве аргумента в awk ex. awk 'NR==1 {print $2}' "$f"

Также обратите внимание, что новый файл будет создан относительно текущего каталога, а не подкаталога. последовательности (в вашем вопросе недостаточно подробностей, чтобы узнать, является ли это предполагаемым результатом или нет).

Рейтинг:0
флаг it

Спасибо, стальной водитель! Замечания очень помогли! Третий был настоящим решением проблемы! Итак, вот сценарий, который я написал в конце:

#! /бин/баш
для f в $(ls); делать
mv "$f" "$( awk 'NR==1 {print $2}' "$f" ).pdb";
сделано

Если у кого-то есть более "умные" способы сделать это, я был бы очень рад их услышать.

Спасибо!

Pilot6 avatar
флаг cn
`f в $(ls)` не имеет смысла ;-)
флаг it
Это может не иметь смысла, но это сделало работу, и это лучшее, что я могу сделать в настоящее время. Если у вас есть более умные способы, вы можете просветить низшее существо своим большим мозгом ;-)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.