我将 pdf 文件传递给脚本并提取各个部分(例如路径、名称、扩展名),以便我可以找到存储在 org 文件中的一些相关注释。
想要处理当前工作目录中不包含路径的文件(例如file.pdf
而不是./file.pdf
or /path/file.pdf
)。目前我有一个问题,因为我必须设置fdir
。
for fl in "$@"; do
fnme=${fl##*/}
fext=${fl##*.}
fdir=${fl%/*}
fnam=${fnme%.*}
find "$fdir" -type f -name "${fnam}.org"
done
答案1
如果您使用该实用程序dirname
,它将正确返回.
其中没有目录路径的路径名参数:
for pathname do
name=$( basename "$pathname" )
find "$( dirname "$pathname" ) -name "${name%.*}.org" -type f
done
如果您知道您正在处理以 结尾的文件名.pdf
,那么您可以使用
for pathname do
find "$( dirname "$pathname" ) -name "$( basename "$pathname" .pdf ).org" -type f
done
如果你有zsh
外壳,你可以使用
for pathname
find $pathname:h -name $pathname:t:r.org -type f
done
:h
返回路径名的“头”,即目录路径部分,而:t
返回“尾”,即文件名部分。您可以使用 . 获得文件名的无扩展名“根” :r
。
如果您只想查找与原始文件相同的目录,那么您还需要限制这样find
做的递归。您可以使用-maxdepth 1
最新的find
.
答案2
如果为空,您可以默认为./
搜索目录。$fdir
例如:
find "${fdir:-./}" -type f -name "$fnam.org"