我有两个目录dir1和dir2,每个目录包含8000多个文件。我想将dir 1中具有相同名称的dir1中的文件解压缩到一个目录,并将dir2中dir1中具有相同名称的文件解压缩到另一个目录中。
答案 0 :(得分:0)
如果我理解正确,你正在寻找类似的东西
#!/bin/bash
dir1list=(/path/to/dir1/*)
dir2list=(/path/to/dir2/*)
mkdir /tmp/dirlist
for(( n=0; n<${#dir1list}; n++)); do
echo "${dir1list[n]##/*/}" >> /tmp/dirlist/dir1.list
done
for(( n=0; n<${#dir2list}; n++)); do
echo "${dir2list[n]##/*/}" >> /tmp/dirlist/dir2.list
done
grep -Fx -f /tmp/dirlist/dir2.list /tmp/dirlist/dir1.list > /tmp/dirlist/difflist1.txt
grep -Fx -f /tmp/dirlist/dir1.list /tmp/dirlist/dir2.list > /tmp/dirlist/difflist2.txt
XIFS=$IFS
IFS=$'\n'
Difflist1=($(</tmp/dirlist/difflist1.txt))
Difflist2=($(</tmp/dirlist/difflist2.txt))
IFS=$XIFS
for(( n=0; n<${#Difflist1}; n++)); do
mv "/path/to/dir1/${Difflist1[n]}" /path/to/dir3
done
for(( n=0; n<${#Difflist2}; n++)); do
mv "/path/to/dir2/${Difflist2[n]}" /path/to/dir4
done
可能有一种更优雅的方式来做到这一点。我的基础是几个月前我必须写的一个更复杂的脚本,所以它可能不适合你的特定工作。