查找操作员无法进入目录?

时间:2019-11-29 20:49:02

标签: shell sh

我试图列出一个目录中不存在的所有文件。

脚本告诉我: find: ‘ (...) /nanorc/../original/*’: No such file or directory

问题出在哪里?谢谢!

代码:

# todo: list all files that isn't in original folder
# get a file in nanorc folder
# try to find it in the ../original folder
# if there isn't, list it.

cd nanorc/
for file in *; do
  [ -e "$file" ] || continue

#  if [ -z $(find "$(pwd)/../original/*" -name "$file") ]; then
  if [ -z $(find $(pwd)/../original/* -name "$file") ]; then
    lite=`printf "%s %s" "$lite" "$file"`
  fi

done
cd ..

echo "$lite

注意:

  • 脚本必须是POSIX投诉。
  • 我尝试了各种find方法,例如:“ ../ original”,“ ../ original /*”、...
  • 我不想创建文件;检查后,脚本应填充一个变量。

解决方案: 只需熄灭“”即可。

1 个答案:

答案 0 :(得分:0)

要检查文件是否存在,请使用test -e

if [ ! -e "../original/$file" ]; then
    echo "File ../original/$file does not exists" 
fi

默认情况下,在当前工作目录中搜索路径,无需使用$(pwd)

您的脚本中的错误来自"$(pwd)/../original/*"-*"内部,因此它不会扩展。您可以将其更改为"../original/"*,但是由于find是递归工作的,因此只需find ../original