如果目录测试远程文件

时间:2010-06-09 13:24:06

标签: unix

HOSTNAME=$1

#missing files will be created by chk_dir
for i in `cat filesordirectorieslist_of_remoteserver`
do

isdir=remsh $HOSTNAME "if [ -d $i ]; then echo dir; else echo file; fi"

if [ $isdir -eq "dir" ]
then

remsh $HOSTNAME "ls -d $i | cpio -o" | cpio -id
else

remsh $HOSTNAME "ls | cpio -o" | cpio -id
fi
done

我需要简单的解决方案来检查远程文件是目录还是文件? 感谢

2 个答案:

答案 0 :(得分:0)

您需要在第一个remsh周围添加反引号:

isdir=`remsh $HOSTNAME "if [ -d $i ]; then echo dir; else echo file; fi"`

答案 1 :(得分:0)

这在bash(Fedora)上对我有用:

ssh $REMOTEHOST [ -d /path/to/some/directory ]

ssh $REMOTEHOST [ -f /path/to/some/file ]

退出状态0或1将反映远程主机上目录/文件的现有/不存在状态。

我使用密钥交换来避免每次都需要提供凭据,因此可以轻松编写脚本。我在进行多个subversion存储库同步之前在循环中使用它,以了解是否需要初始化新的存储库。