我有一个7000个以上文件的大文件列表要从Unix目录中删除。我可以用while循环完成这个
while read file
do
rm $file
done < filelist
或只是
cat filelist | xargs rm
挑战来自于删除那些具有&#34;类似Windows的反斜杠\,冒号:和空格&#34;在他们的文件名中。
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
问题是文件名带有&#34; \ 0000&#34;在他们的字符串
eg. N:\Lxxx\Dxxx_FOLDER\Mxxx\Mxxx_DOWNLOAD_TEXTFILE_PATH\000000_Mxxx_Bxxx-Pxxx-H.txt
总是最终得到&#34; \ 0000&#34;从输出中神秘地截断。
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"
通过循环后,没有其他文件出现此问题。
任何线索?