再帰モードはファイルではなくディレクトリでのみ動作します。glob ‘*.pdf’ を使用することで、シェルはファイルリストを chown に渡しています。グロブがファイルにマッチする場合、ファイルはコマンドに渡され、コマンドはグロブの存在を知りません (これは、Windows コマンドの方法とは異なります。(これは、Windows のコマンドプロンプトが行っていた方法とは異なります)。のような内容のディレクトリを持っている場合:
machine:$ ls -F
file1.pdf file2.pdf other.txt subdir/
と入力した場合:
chown -R someuser:somegroup *.pdf
シェルは最初にリストを作成します: file1.pdf file2.pdf
そしてコマンドを実行します:
chown -R someuser:somegroup file1.pdf file2.pdf
ほら、-R が動作するためのディレクトリがありません。それはあなたが尋ねたことをします - コマンドライン上の2つのファイルの所有権を変更し、その風変わりな-Rフラグを無視します。 pdf’ をこのディレクトリとサブディレクトリのためのパターンとして使うには、find
を使うことができます。これは、ファイル名パターン (あるいは他の多くの基準) にマッチするファイルを見つけ、サブコマンド
find . -type f -name '*.pdf' | xargs chown someuser:somegroup
これは、名前パターン '*.pdf'
のファイル (filetype f) を探すために、カレントディレクトリ ‘.’ から始まり、その後 chmod するコマンドラインを構築する xargs に渡します。シェルは可能であればグロブを作成しますが、あなたは '*.pdf'
に渡されるパターンが欲しいので、それを引用符で囲む必要があることを覚えておいてください。より強力なグロブ処理は、bash 4 (find
を使って) や他のシェルで利用可能です。再帰グロブ shopt -s globstar
を使用した zsh の場合も同様です。