Как мне скопировать файлы с пунктуацией в них?


У меня были некоторые файлы (текстовые документы и сохраненные веб-страницы), которые я копировал на USB, выбрав их все, нажав Ctrl + C, а затем Ctrl + V на USB-накопитель. Как только он начал копировать, появится диалоговое окно с сообщением о необходимости переименовать или пропустить файл. Это продолжалось для многих файлов, и я понял, что если я захочу скопировать эти файлы, мне придется убрать все знаки препинания в имени файла. Я не знаю, что делать, похоже, у меня нет выбора, кроме как сделать это для всех этих файлов. Как мне это остановить?

0
задан 19 January 2018 в 22:03

2 ответа

Вы можете использовать следующий сценарий, предполагая, что вы хотите скопировать все файлы из каталога 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
1
ответ дан 19 January 2018 в 22:03

Если у вас одинаковая файловая система в исходном разделе (на вашем внутреннем диске) и в целевом разделе (на USB-накопителе), копирование должно работать, по крайней мере, если вы заключите в кавычки имена файлов.

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

Следующая ссылка помогает определить, какие символы можно использовать и каких символов следует избегать,

superuser.com/questions/358855/what-characters-are-safe-in-cross -platform-file-names-for-linux-windows-and-os

Краткое описание:

  • Windows: все, кроме управляющих символов ASCII и \ / : * ? " < > |
  • Linux, OS-X: все, кроме null или /

На всех платформах лучше избегать непечатных символов, таких как управляющие символы ASCII.

В Linux и OS-X только / из печатного набора ASCII запрещено, я считаю. Некоторые символы (метасимволы оболочки, такие как * ? !) вызовут проблемы в командной строке и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.

0
ответ дан 19 January 2018 в 22:03

Другие вопросы по тегам:

Похожие вопросы: