find . | grep "\.doc$"
これにより、パスも表示されます。
ls
コマンド出力は、主に人間による読み取りを目的としています。自動処理のための高度なクエリには、より強力な find
を使用する必要があります コマンド:
find /path -type f \( -iname "*.doc" -o -iname "*.pdf" \)
あたかも bash 4.0++ を持っているかのように
#!/bin/bash
shopt -s globstar
shopt -s nullglob
for file in **/*.{pdf,doc}
do
echo "$file"
done
「ls」と「grep」に慣れている場合は、grep コマンドで正規表現を使用して、必要なことを行うことができます (末尾の「$」文字は、.doc が行末にある必要があることを示しています。 "file.doc.txt" を除外):
ls -R |grep "\.doc$"
man での正規表現での grep の使用に関する詳細情報。