我们经常用find和xargs来进行批处理文件。
常见的用法如:find ./ -name ".jpg" | xargs cp -t ./JPEGImages
,实现将当前目前下所有以.jpg结尾的文件复制到当前目录下的JPEGImages目录中。
但是当find找到一个文件名中含有空格的文件时,便会出现该文件被无法正确复制的问题。
有一个参数-print0
,和默认的-print
相比,当输入中有空格时,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0
,可以接受以null而非含有空格的输入流。
将代码修改为如下形式:
find ./ -name "*.jpg" -print0 | xargs -0 cp -t ./JPEGImages
用cat和xargs来处理带空格的文件:
cat all_data_13cls_img.txt | tr '
' ' ' | xargs -0 cp -t JPEGImages/
在Notepad++中对行尾的.jpg进行替换时,在Search Model中选择正则,然后在.jpg$替换为.txt
其中$代表行尾,^代表行首。