Гаразд, у мене є маса файлів, починаючи з тире, -. Що не так добре ... і я хочу їх перейменувати. У моєму конкретному випадку я просто хотів би поставити перед ними персонажа.
Я знайшов наступний рядок, який повинен працювати, але через його тире він не працює:
for file in -N*.ext; do mv $file x$file; done
Якщо я поставив echo
перед, mv
я отримаю купу
mv -N1.ext x-f1.ext
mv -N2.ext x-f2.ext
Що правильно, за винятком випадків, якщо вони вважають, що ім'я першого файлу - це параметри. Тож коли я виймаю echo
і запускаю його, я просто отримую купу
mv: illegal option -- N
Я спробував це змінити
for file in -N*.ext; do mv "$file" "x$file"; done
але цитати просто ігноруються, здається. Намагався використовувати одинарні лапки, але потім змінну не розширювали ... Що я тут роблю?
Оновлення: я зараз також намагався навести цитати. Подобається це:
for file in -N*.ext; do mv '"'$file'"' '"'x$file'"'; done
І коли я це повторюю, це виглядає правильно, але коли я його фактично запускаю, я просто отримую
mv: rename "-N1.ext" to "x-n1.ext":: No such file or directory
У мене просто немає поняття, як це зробити зараз ... зітхніть