Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 给定文件名,如何从shell中的目录获取它_Linux_File_Shell_Find - Fatal编程技术网

Linux 给定文件名,如何从shell中的目录获取它

Linux 给定文件名,如何从shell中的目录获取它,linux,file,shell,find,Linux,File,Shell,Find,我想比较不同目录中同名的两个文件。 $1和$2是两个目录。我可以检查是否有同名文件,但我不知道如何获取第二个文件 cd $1 for i in `ls` do if [ -f $2/$i ] then echo "find it in another directory" GET THE OTHER FILE IN $2, THEN COMPARE THEM cmp -s $i THE OTHER FILE if [ $? = 0 ]

我想比较不同目录中同名的两个文件。 $1和$2是两个目录。我可以检查是否有同名文件,但我不知道如何获取第二个文件

cd $1
    for i in `ls`
do
if [ -f $2/$i ]
then
    echo "find it in another directory"

    GET THE OTHER FILE IN $2, THEN COMPARE THEM

    cmp -s $i THE OTHER FILE
    if [ $? = 0 ]
        echo "they are same"
    else
        echo "they are different"
    fi
fi
done

最简单的问题是args中的空格-很容易修复,只需引用$1和$2

if [ -f "$2/$i" ]
但我怀疑问题在于您将CDN转换为$1,这意味着$2无效(如果它是相对路径)

解决方案1)使用绝对路径(例如/staff/bathpp/stuff/dir2)

解决方案2)如果需要相对路径,则在跳转之前获取当前目录

origDir=`pwd`
...
path2="$origDir/$path2"

就我个人而言,我想做一些检查,这样两者都能用。

最简单的问题是args中的空格-很容易修复,只需报1美元和2美元

if [ -f "$2/$i" ]
但我怀疑问题在于您将CDN转换为$1,这意味着$2无效(如果它是相对路径)

解决方案1)使用绝对路径(例如/staff/bathpp/stuff/dir2)

解决方案2)如果需要相对路径,则在跳转之前获取当前目录

origDir=`pwd`
...
path2="$origDir/$path2"
就我个人而言,我想要一些支票,这样两种支票都能用。

第一次付1美元/*
做
SECOND=$2/$(basename“$FIRST”)
如果[-f“$SECOND”];然后
diff--简短的“$FIRST”“$SECOND”
fi
完成
注意
diff——仅当输出不同时才进行简短的
。如果要查看实际差异,请删除$1中第一个的
--brief

/*
做
SECOND=$2/$(basename“$FIRST”)
如果[-f“$SECOND”];然后
diff--简短的“$FIRST”“$SECOND”
fi
完成

注意
diff——仅当输出不同时才进行简短的
。如果您想查看实际差异,请删除
--brief

您可以使用
comm-12,谢谢。另一件事是,我仍然不知道如何获取第二个文件,我对shell是新手,我尝试了查找,grep,两者都不起作用。我不知道如何获取该文件以便比较。不确定“获取”是什么意思-如果$2是绝对路径,“$2/$i”将“获取”它。如果$2是相对路径,那么“$origDir/$2/$i”是,谢谢。另一件事是,我仍然不知道如何获取第二个文件,我对shell是新手,我尝试了查找,grep,两者都不起作用。我不知道如何获取该文件以便比较。不确定“获取”是什么意思-如果$2是绝对路径,“$2/$i”将“获取”它。如果$2是相对路径,则“$origDir/$2/$i”