查找操作员无法在目录中上去?
Find operator can't go up in directory?
我正在尝试列出一个目录中不存在于另一个目录中的所有文件。
脚本告诉我:
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投诉
- 我尝试了多种查找方式,例如:“../original”、“../original/*”、...
- 我不想创建文件;脚本应在检查后填充一个变量。
解法:
把“”放出来就行了。
检查文件是否存在使用test -e
.
if [ ! -e "../original/$file" ]; then
echo "File ../original/$file does not exists"
fi
路径默认在当前工作目录下搜索,不需要使用$(pwd)
.
您脚本中的错误来自 "$(pwd)/../original/*"
- *
在 "
内,因此它不会展开。您可以将其更改为 "../original/"*
,但由于 find
递归工作,因此只需 find ../original
.
我正在尝试列出一个目录中不存在于另一个目录中的所有文件。
脚本告诉我:
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投诉
- 我尝试了多种查找方式,例如:“../original”、“../original/*”、...
- 我不想创建文件;脚本应在检查后填充一个变量。
解法: 把“”放出来就行了。
检查文件是否存在使用test -e
.
if [ ! -e "../original/$file" ]; then
echo "File ../original/$file does not exists"
fi
路径默认在当前工作目录下搜索,不需要使用$(pwd)
.
您脚本中的错误来自 "$(pwd)/../original/*"
- *
在 "
内,因此它不会展开。您可以将其更改为 "../original/"*
,但由于 find
递归工作,因此只需 find ../original
.