我正在查看变量文件是否在另一个目录中,如果是,则停止脚本运行得更远。到目前为止,我有这个:
#! /bin/bash
for file in /directory/of/variable/file/*.cp;
do
test -f /directory/to/be/checked/$file;
echo $?
done
我运行$ file的回显并看到它包含完整路径,这可以解释为什么我的测试没有看到文件,但我不知道如何前进以便我可以检查。
非常感谢任何帮助!
由于
答案 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