我有两个文件夹具有相似的子文件夹结构,我想进行比较。例如:
A
├── child-1
├── child-2
├── child-3
├── child-4
├── child-5
和
B
├── child-1-some-text
├── child-2-more-text
├── child-3-nothing
├── child-6-random-text
├── child-7-more-random-text
我想列出其中所有子文件夹A
的前缀的所有那些子文件夹,B
并列出相应的子文件夹B
。预期的输出是
child-1 -- child-1-some-text
child-2 -- child-2-more-text
child-3 -- child-3-nothing
次要要求:如果中有多个匹配项B
,则应该给出错误/警告。
我的解决方案:
cd A
for f in `ls -d */`;
do
cd B;
new_dirs=(`ls -1d $f*`);
cd -;
if [ ${#new_dirs[@]} -eq 0 ]
then
## DO_Nothing
continue;
elif [ ${#new_dirs[@]} -gt 1 ]
then
echo "Multiple matches to $f";
continue;
else
echo "Unique Match found to $f -- ${new_dirs[0]}";
continue;
fi;
done
问题:
对于那些$f
在中没有对应子文件夹的值B
,数组构造给我一个错误。例如:
ls:无法访问“ child-4 *”:没有此类文件或目录
题
- 如何摆脱这些错误?
- 是否有比我代码中更好的方法来实现目标?
提前致谢!
4
+1提供几乎可行的解决方案!
—
user5325
这不是您的特定问题的答案,但您不仅可以
—
jrw32982支持莫妮卡
diff -rq DIR1 DIR2
用来比较目录结构,还可以用来比较文件内容。