У меня были некоторые файлы (текстовые документы и сохраненные веб-страницы), которые я копировал на USB, выбрав их все, нажав Ctrl + C, а затем Ctrl + V на USB-накопитель. Как только он начал копировать, появится диалоговое окно с сообщением о необходимости переименовать или пропустить файл. Это продолжалось для многих файлов, и я понял, что если я захочу скопировать эти файлы, мне придется убрать все знаки препинания в имени файла. Я не знаю, что делать, похоже, у меня нет выбора, кроме как сделать это для всех этих файлов. Как мне это остановить?
Вы можете использовать следующий сценарий, предполагая, что вы хотите скопировать все файлы из каталога DIR1 в другой DIR2 на вашем USB-ключе.
Если ваш выбор файла более сложный, вы можете адаптировать скрипт, например, используя find
.
Если у вас есть другие недопустимые символы, просто добавьте еще sed
команд.
#!/bin/bash
DIR1=/path/to/origin
DIR2=/path/to/target
for file in `ls $DIR1`
do
newfile=`echo $file | sed 's/\./_stop_/g' | sed 's/,/_comma_/g'`
cp $DIR1/$file $DIR2/$newfile
done
Если у вас одинаковая файловая система в исходном разделе (на вашем внутреннем диске) и в целевом разделе (на USB-накопителе), копирование должно работать, по крайней мере, если вы заключите в кавычки имена файлов.
Но это хорошая идея, чтобы избегать специальных символов в именах файлов (и я имею в виду символы со специальным значением в файловых системах, а также в программах оболочки и операционных системах, которые используются или будут использоваться).
Следующая ссылка помогает определить, какие символы можно использовать и каких символов следует избегать,
Краткое описание:
- Windows: все, кроме управляющих символов ASCII и
\ / : * ? " < > |
- Linux, OS-X: все, кроме null или /
На всех платформах лучше избегать непечатных символов, таких как управляющие символы ASCII.
В Linux и OS-X только / из печатного набора ASCII запрещено, я считаю. Некоторые символы (метасимволы оболочки, такие как
* ? !
) вызовут проблемы в командной строке и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.