![他のファイルの内容からファイル名を探す[閉じる]](https://linux33.com/image/154987/%E4%BB%96%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%8B%E3%82%89%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E6%8E%A2%E3%81%99%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
フォルダにテキストファイルがたくさんあります。
上記のフォルダに別のファイル名を含むファイルが何であるかを知りたいです。
例:file1の名前はフォルダ1の他のファイルに記載されていますか?
folder1
├── folder1.1/
│ ├── file1
│ ├── file2
└── folder1.2/
├── file3
└── folder1.2.1/
└── file4
答え1
find
withを使用basename
してファイル名を取得し、次を使用してパターンとしてgrepに入力します-f -
。
find . -type f -exec basename -a -- {} + | grep -Ff - -R .
例:
$ tree
.
├── folder2
│ ├── f1
│ ├── folder2a
│ └── folder2b
│ └── f3
└── folder3
├── folder3a
│ └── f2
└── folder3b
6 directories, 3 files
$ find . -type f -exec basename -a -- {} + | grep -Ff- -R .
./folder2/folder2b/f3:f2
./folder3/folder3a/f2:f1