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