用find和xargs处理文件名中带空格的文件

我们经常用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
其中$代表行尾,^代表行首。

原文地址:https://www.cnblogs.com/pogeba/p/13953884.html