Удаление имен файлов, которые имеют пробел и специальные символы - PullRequest
0 голосов
/ 31 мая 2018

У меня есть большой список файлов из 7000+ файлов для удаления из каталога Unix.Я мог бы сделать это, используя цикл while

while read file
do
rm $file
done < filelist

или просто

cat filelist | xargs rm 

Проблема заключается в удалении тех файлов, которые имеют «Windows-подобные слеш \, двоеточие: и пробелы»"в их именах файлов.

Eg.
C:\Sxxx Accr Vac 1111.txt
N:\Lxxx\Dxxx_FOLDER\Mxxx\Mxxx_DOWNLOAD_TEXTFILE_PATH\000000_Mxxx_Bxxx-Pxxx-H.txt
N:\Lxxx\Dxxx_FOLDER\Mxxx\Mxxx_DOWNLOAD_TEXTFILE_PATH\130607_Mxxx_Bxxx-Cxxx-L.txt
N:\Lxxx\Dxxx_FOLDER\Mxxx\Mxxx_DOWNLOAD_TEXTFILE_PATH\140103_Mxxx_Xxxx-Pxx-H.txt

Чтобы удалить их, мне пришлось заключить все имя файла в двойные кавычки.Я хотел предварительно просмотреть команды rm для каждого файла перед фактическим удалением:

while read -r file
do
echo rm \"$file\"
done < filelist

Проблема заключается в том, что имена файлов с "\ 0000" в их строках

eg. N:\Lxxx\Dxxx_FOLDER\Mxxx\Mxxx_DOWNLOAD_TEXTFILE_PATH\000000_Mxxx_Bxxx-Pxxx-H.txt

всегда заканчивались«\ 0000» загадочно усечено из выходных данных.

Eg. For the above file, the rm commands shows up as:
rm "N:\Lxxx\Dxxx_FOLDER\Mxxx\Mxxx_DOWNLOAD_TEXTFILE_PATH00_Mxxx_Bxxx-Pxxx-H.txt"

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

Есть какие-нибудь подсказки?

...