Find

處理 find 命令的工作目錄

  • October 20, 2021

我將 pdf 文件傳遞給腳本並提取各個部分(例如路徑、名稱、副檔名),以便我可以找到一些儲存在 org 文件中的相關評論。

想要處理目前工作目錄中不包含路徑的文件(例如file.pdf,而不是./file.pdfor /path/file.pdf)。目前我有一個問題,因為我必須設置fdir.

for fl in "$@"; do
  fnme=${fl##*/}
  fext=${fl##*.}
  fdir=${fl%/*}
  fnam=${fnme%.*}
  
  find "$fdir" -type f -name "${fnam}.org"
done

如果您使用該實用程序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.

引用自:https://unix.stackexchange.com/questions/673951