有一些文件,我必须检查它们是否存在于一个目录中。 除了文件扩展名之外,它们遵循标准的命名惯例,所以我想使用通配符,例如:
YYYYMM=201403 FILE_LIST=`cat config.txt` for file in $FILE_LIST do FILE=`echo $file | cut -f1 -d"~"` SEARCH_NAME=$FILE$YYYYMM ANSWER=`ssh -q userID@servername 'ls /home/to/some/directory/$SEARCH_NAME* | wc -l'` returnStatus=$? if [ $ANSWER=1 ]; then echo "FILE FOUND" else echo "FILE NOT FOUND" fi done
通配符不工作,如何使其可见的任何想法?
我刚才也有同样的问题。 在绝望中,我放弃了使用grep和xargs的管道来获得通配符的功能。
是(这些都没有工作 – 并尝试其他人):
ssh -tr@host "rm /path/to/folder/alpha*" ssh -tr@host "rm \"/path/to/folder/alpha*\" " ssh -tr@host "rm \"/path/to/folder/alpha\*\" "
方法是:
ssh -tr@host "cd /path/to/folder/ && ls | grep alpha | xargs rm"
注意:我用ls而不是rm来解决问题,以防万一我感到惊讶。
使用STDIN更好:
echo "rm /path/to/foldef/alpha*" | ssh r@host sh
用这种方法你仍然可以使用shell变量来构造命令。 例如:
echo "rm -r $oldbackup/*" | ssh r@host sh