检查变量文件是否在另一个目录中

时间:2018-01-10 20:05:35

标签: bash

我正在查看变量文件是否在另一个目录中,如果是,则停止脚本运行得更远。到目前为止,我有这个:

#! /bin/bash 
for file in /directory/of/variable/file/*.cp;
do
test -f /directory/to/be/checked/$file;
echo $?
done

我运行$ file的回显并看到它包含完整路径,这可以解释为什么我的测试没有看到文件,但我不知道如何前进以便我可以检查。

非常感谢任何帮助!

由于

2 个答案:

答案 0 :(得分:1)

我想你想要

#! /bin/bash 
for file in /directory/of/variable/file/*.cp  ; do
   newFile="${file##*/}"
   if test -f /directory/to/be/checked/"$newFile" ; then
      echo "/directory/to/be/checked/$newFile already exists, updating ..."
   else
      echo "/directory/to/be/checked/$newFile not found, copying ..."
   fi
   cp -i "$file" /directory/to/be/checked/"$newFile"
done

请注意,您可以将cp -i替换为mv -i移动该文件,不会在/directory/of/variable/file/中留下任何文件。

-i选项意味着询问(我认为),这意味着如果文件已经存在,它将询问您overwrite /directory/to/be/checked/"$newFile"(或类似)您必须回复y。只有当文件已存在于新位置时才会发生这种情况。

IHTH

答案 1 :(得分:0)

命令basename将只提供文件(或目录)而不包含其余路径。

#! /bin/bash 
for file in /directory/of/variable/file/*.cp;
do
    test -f /directory/to/be/checked/$(basename $file);
    echo $?
done