shell脚本文件搜索
shell script file search
我正在尝试通过路径删除以 collectorlist*
开头的文件,因此我编写了如下所示的 shell 脚本。但是 -e 选项总是给出未找到的输出。请建议我。
脚本
if [ -d "/abc" ] ; then
for c in `ls -1 "/abc/"`; do
if [ -d "/abc/${c}" ] ; then
if [ -d "/abc/${c}/dynatrace/agent/linux-x86-64/agent/conf/" ] ; then
if [ -e "/bxp/${c}/dynatrace/agent/linux-x86-64/agent/conf/collectorlist* " ] && echo "Found" || echo "Not found" ; then
`ls -ltr "sat.txt"` > /users/home/abc/test.txt
fi
fi
fi
done
fi
您的代码存在一些问题。
- 在星号之后和结束双引号之前有一个尾随 space。
- 您在双引号内使用了星号;在双引号内,像星号这样的通配符不会被评估,而是被逐字记录。
- 您将反引号与重定向一起使用。这将执行反引号内的内容,用它的输出替换反引号表达式并执行结果行。因此,您的
ls
命令需要给出随后将要执行的命令的名称。我想你不想要那个。只需删除反引号,您可能只想执行 ls
并将其输出重定向到文件中。
- 您尝试找出 任何 匹配模式的文件是否存在,并为此使用
[ -e pattern* ]
。 pattern*
评估一个或多个文件名或(none 存在)pattern*
本身(除非你调整你的 shell 以不同的方式表现)。问题是许多值的情况。这些会在您的 [ ... ]
表达式中产生问题。
结果:
if [ -d "/abc" ] ; then
for c in $(ls -1 "/abc/"); do
if [ -d "/abc/${c}/dynatrace/agent/linux-x86-64/agent/conf/" ] ; then
if ls "/bxp/${c}/dynatrace/agent/linux-x86-64/agent/conf"/collectorlist* &> /dev/null; then
echo "Found"
ls -ltr "sat.txt" > /users/home/abc/test.txt
else
echo "Not Found"
fi
fi
done
fi
我正在尝试通过路径删除以 collectorlist*
开头的文件,因此我编写了如下所示的 shell 脚本。但是 -e 选项总是给出未找到的输出。请建议我。
脚本
if [ -d "/abc" ] ; then
for c in `ls -1 "/abc/"`; do
if [ -d "/abc/${c}" ] ; then
if [ -d "/abc/${c}/dynatrace/agent/linux-x86-64/agent/conf/" ] ; then
if [ -e "/bxp/${c}/dynatrace/agent/linux-x86-64/agent/conf/collectorlist* " ] && echo "Found" || echo "Not found" ; then
`ls -ltr "sat.txt"` > /users/home/abc/test.txt
fi
fi
fi
done
fi
您的代码存在一些问题。
- 在星号之后和结束双引号之前有一个尾随 space。
- 您在双引号内使用了星号;在双引号内,像星号这样的通配符不会被评估,而是被逐字记录。
- 您将反引号与重定向一起使用。这将执行反引号内的内容,用它的输出替换反引号表达式并执行结果行。因此,您的
ls
命令需要给出随后将要执行的命令的名称。我想你不想要那个。只需删除反引号,您可能只想执行ls
并将其输出重定向到文件中。 - 您尝试找出 任何 匹配模式的文件是否存在,并为此使用
[ -e pattern* ]
。pattern*
评估一个或多个文件名或(none 存在)pattern*
本身(除非你调整你的 shell 以不同的方式表现)。问题是许多值的情况。这些会在您的[ ... ]
表达式中产生问题。
结果:
if [ -d "/abc" ] ; then
for c in $(ls -1 "/abc/"); do
if [ -d "/abc/${c}/dynatrace/agent/linux-x86-64/agent/conf/" ] ; then
if ls "/bxp/${c}/dynatrace/agent/linux-x86-64/agent/conf"/collectorlist* &> /dev/null; then
echo "Found"
ls -ltr "sat.txt" > /users/home/abc/test.txt
else
echo "Not Found"
fi
fi
done
fi