ディレクトリ内のファイルに保存されているすべての値を見つけようとします。
できますが、cat /some/dir/*
次のような結果が出ます。
1
2
3
4
私が望むものは次のとおりです。
/some/dir/file1: 1
/some/dir/file2: 2
私ができる方法はありますか?
答え1
GNU grep
(CEntOSで実装)と互換性があります。
grep -r '^' /some/dir
正規表現は^
各行の先頭で一致するため、すべての行に一致します。grep
一致する各行の前にファイル名を追加します。-n
行番号を含むオプションを追加することもできます。
POSIX的に:
find /some/dir -type f -exec grep '^' /dev/null {} +
ファイルリストに要素が1つしかない場合でも、ファイル名が印刷される/dev/null
ようにコンテンツを追加します。grep
答え2
すべてのファイルに1行しか含まれていない場合:
find /some/dir -type f -exec awk '{print FILENAME ": " $0}' {} +
それ以外の場合は、ファイル名をヘッダーとして使用して1行を印刷します。
find /some/dir -type f -exec awk 'FNR<2{print FILENAME ":"}1' {} +