Linux从不同目录中递归查询相同文件并归档
作者:互联网
描述
查找dest目录和source目录下相同的文件,打包成back_up.tar.gz
例:
dest
|-1.txt
|-2.txt
|-lib
|-1.class
|-2.class
|-3.class
source
|-1.txt
|-3.txt
|-2.class
|-lib
|-1.class
|-4.class
则将1.txt lib/1.class打包到压缩包中
代码
function read_file(){
target_dir=$1
#清理遗留文件
rm -rf ${target_dir}.txt
#遍历获取文件名,并输出到文本文件中
for file in $(ls ${target_dir})
do
if [ -d ${target_dir}"/"${file} ];then
read_file ${target_dir}"/"${file}
else
file_name=${target_dir}"/"${file}
#${file_name#*/}表示去左留右,;${target_dir%%/*}表示去右留左,仅以首次传入的目录名来命名txt文件
echo ${file_name#*/} >> ${target_dir%%/*}.txt
fi
done
}
target_dir_1="dest"
target_dir_2="source"
#读取目录下文件信息
read_file ${target_dir_1}
read_file ${target_dir_2}
#获取相同文件(以${target_dir_1%%/*}.txt文件的每一行为关键字,查找${target_dir_2%%/*}.txt文件中匹配的行)
grep -f ${target_dir_1%%/*}.txt ${target_dir_2%%/*}.txt > same_file.txt
#将相同文件打包
pushd ${target_dir_1}
#从文件清单中创建归档文件
tar -T ../same_file.txt -cvzf back_up.tar.gz
popd
验证
[root@aliyun test]# tree dest/
dest/
├── 1.txt
├── 2.txt
└── lib
├── 1.class
├── 2.class
└── 3.class
1 directory, 5 files
[root@aliyun test]# tree source/
source/
├── 1.txt
├── 2.class
├── 3.txt
└── lib
├── 1.class
└── 4.class
1 directory, 5 files
[root@aliyun test]# sh find_same_file.sh
LINE:1.txt
LINE:lib/1.class
[root@aliyun test]# ll
总用量 44
drwxr-xr-x 3 root root 4096 4月 7 09:10 dest
-rw-r--r-- 1 root root 48 4月 7 09:10 dest.txt
-rw-r--r-- 1 root root 1310 3月 11 15:57 find_same_file.sh
-rw-r--r-- 1 root root 1477 3月 14 08:59 logs_select.sh
-rw-r--r-- 1 root root 18 4月 7 09:10 same_file.txt
drwxr-xr-x 3 root root 4096 3月 11 14:59 source
-rw-r--r-- 1 root root 44 4月 7 09:10 source.txt
-rw-r--r-- 1 root root 5953 4月 1 17:54 spiders_bs4.py
-rw-r--r-- 1 root root 6318 4月 1 18:17 spiders_by_selemium.py
[root@aliyun test]# cat dest.txt
1.txt
2.txt
lib/1.class
lib/2.class
lib/3.class
[root@aliyun test]# cat source.txt
1.txt
2.class
3.txt
lib/1.class
lib/4.class
[root@aliyun test]# cat same_file.txt
1.txt
lib/1.class
标签:target,递归,Linux,file,归档,txt,root,class,dir 来源: https://www.cnblogs.com/Torres-tao/p/16110763.html