Это связано с линейными окончаниями, которые используют Windows ( \ R \ N
).
Вы можете удалить THES через VI
:
$ vi myfile.txt
<ESC>
:set fileformat=unix
:wq
Если у вас есть список сотен файлов файлов, и вы хотите удалить их, нет причин для записи отдельных команд RM
для каждого из них. Предполагая, что имена файлов сохранены в файле под названием list.txt
, по одному на линии, и , которые они не содержат новых символов , вы могли бы просто сделать
while read -r file; do rm "$file"; done < list.txt
при чтении переменная; сделай что-нибудь; Сделано construct, будет прочитать каждую строку из файла и сохранять ее как переменную
(в приведенном выше примере имя переменной является файл
). Требуется -R -R
, чтобы разрешить имена файлов, содержащих такие вещи, как \ R
или \ T
. С -R
-R
они будут обрабатываться буквально, в то время как без него они будут расширены до возврата каретки или вкладки соответственно.
RM "$ file"
: Это удалит каждый файл в списке, как он читается. Или, вы можете использовать MapFile Bash's
, который позволяет сохранить строки файла в массиве:
mapfile -t filelist < list.txt && rm "${filelist[@]}"
Спасибо за ответы, технические причины для этого, вероятно, в файле, кодирующемся где-то, но, чтобы исправить, я просто создал мой файл в CentOS Box
$> touch myfile.txt
$> nano myfile.txt
$> touch myfile.txt
$> nano myfile.txt
. В моем скрипте Bash (спасибо @jimmij)
#!/bin/bash
и сохранено, я использовал Notepad ++ в Windows, чтобы добавить файлы, которые я хотел удалить согласно моему первоначальному синтаксису и Bingo.
Спасибо за предложения @marko Frelih, @jimmij