Эти имена файлов с «путями 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"

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

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

Ответы на вопрос(0)

Ваш ответ на вопрос