У меня есть большой список файлов из 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"
Ни у одного из других файлов не было этой проблемы после прохождения цикла.
Есть какие-нибудь подсказки?