最近拿到了一个会议的论文集合,可是这些论文集合里面又没有标题,我需要从中提取自己感兴趣的部分论文,一共好几百篇论文,我又不能一个个去找,所以只能自己写个脚本去找了。
有的论文下载下来会有空格,所以需要先把空格处理掉,批量处理空格的办法如下:
#将dir目录下面的所有文件名中的空格去掉
rename 's/ //g' dir/*
首先,先用grep查找出符合条件的论文,然后把这些论文的题目提取到一个文件里面。
这里用如下命名就可以解决
grep -r "SLAM" . | cut -f 1 -d ":" > slamfiles
然后,我打开文件发现这里面还有几个中文,这我就比较尴尬了,我又得把这些中文删去,所以又找了sed命令。我这里是有“匹配到二进制文件”这八个字,然后加一个空格,所以这里我用如下去名去删除没一行的前9个字符:
sed -i 's/.........//' slamfiles
这样我就得到了只有文件名的一个文件。这就好处理了,直接用cut命令就可以了,用一个循环。具体如下:
#!/bin/bash
cat slamfiles | while read line
do
filename=`basename $line`;
echo $filename
cp $line /home/fangyu/ros/slam/$filename
done
这样就复制到了我指定的文件夹下面了。
整个脚本代码如下:
#!/bin/bash
grep -r "SLAM" . | cut -f 1 -d ":" > slamfiles
sed -i 's/.........//' slamfiles
cat slamfiles | while read line
do
filename=`basename $line`;
echo $filename
cp $line /home/fangyu/ros/slam/$filename
done