【发布时间】:2011-12-16 10:34:18
【问题描述】:
我在脚本的参数化版本中运行了以下命令:
脚本1作为
Nooffiles=`find $1 -mmin $2 -type f -name "$3"|wc -l`
if test $Nooffiles -eq 0
then
exit 1
else
echo "Successful"
find $1 -mmin $2 -type f -name "$3" -exec mv '{}' $4 \;
fi
script1 工作正常。它将文件从 $1 目录移动到 $4。但在将文件移动到新目录后,我必须运行另一个脚本,如下所示:
脚本2作为
for name in `find $1 -type f -name "$2"`
do
filename=`ls $name|xargs -n1 basename`
line=`tail -1 $filename | sed "s/Z/Z|$filename/"`
echo $line >> $3;
echo $filename | xargs -n1 basename;
done
这里,script2 正在读取文件被前一个脚本 script1 移动到的目录。它们存在于该目录中,因为之前的移动脚本运行良好。 'ls' 命令显示它们。但是上面的script2说:
File.txt: No such file or directory
尽管 ls 在目录中显示了它们,但我收到了这样的错误消息。
请帮忙。
【问题讨论】:
-
您是否从正确的目录读取文件?您是否缺少任何斜线?
-
你试过 find 的
-depth选项吗? -
我什至可以使用 cat 命令从新目录中查看移动文件的输出。 'ls' 也有效。然而 script2 说,它们不存在。对了,什么是-depth选项?
-
-depth选项告诉find去“深度优先”。例如,它将找到a/b然后a而不是a然后a/b。例如,要删除 CVS 目录,请使用find -depth -type d -name CVS -exec rm -rf {} \;:如果不使用-depth,则会收到有关CVS: no such file or directory的警告。 -
即使使用 -depth 选项,它也不起作用。 Script2 适用于我使用 cat 命令手动在该目录中创建的任何文件,但不适用于使用 Script1 从另一个目录移动的文件