find コマンドを処理する作業ディレクトリ

find コマンドを処理する作業ディレクトリ

pdfファイルをスクリプトに渡し、さまざまな部分(パス、名前、拡張子など)を抽出して、組織ファイルに保存されている関連する説明を見つけることができます。

現在の作業ディレクトリにパスが含まれていないファイルを処理したい(たとえば、またはfile.pdf代わりに)。現在の設定が必要なので問題があります。./file.pdf/path/file.pdffdir

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パス名の「head」をディレクトリパス部分として返し、:tファイル名部分「tail」を返します。を使用すると、拡張子のないファイル名の「ルート」を取得できます:r

元のファイルと同じディレクトリのみを確認したい場合は、find再帰を制限する必要があります。-maxdepth 1最新バージョンが利用可能ですfind

おすすめ記事