删除具有空格和特殊字符的文件名

时间:2018-05-31 06:39:02

标签: file unix special-characters filenames

我有一个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"

通过循环后,没有其他文件出现此问题。

任何线索?

0 个答案:

没有答案