Bash скрипт для редактирования имени файла и перемещения файла.

Я музыку, что все называют 1 - (song author) - (song name).flac и я хочу изменить имя файла на просто (song author) - (song name).flac затем переместите его в каталог. Вот что у меня пока есть:

while IFS='' read -r line || [[ -n "$line" ]]; do
 cp $line /home/user/Desktop/Music/$(cut -c3- "$line");
done < filelist.txt

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

Это не работает, но в некотором смысле мне показалось интересным. Я получаю ошибку bash: /bin/cp: Argument list too long, и изучив содержание line после разреза, это просто выглядит как случайные символы / коды символов. Может кто-нибудь сказать мне, что Я поступаю неправильно?

8
задан btf1998
12.04.2023 9:36 Количество просмотров материала 3277
Распечатать страницу

1 ответ

cut использует файл или стандартный ввод, а ключ-c предназначен для символов, и вам, скорее всего, нужны поля с разделителями пробелов. Кроме того, второй аргумент cp необходимо заключать в кавычки. И нужно указать -c5-чтобы избавиться от :

while read -r line || [[ -n "$line" ]]; do
  cp $line "/home/user/Desktop/Music/$(echo "$line" | cut -d ' ' -f3-)"
done < filelist.txt
0
отвечен Ziggy Crueltyfree Zeitgeister 2023-04-13 17:24

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх