質問: findコマンドは存在するファイルを見つけることができません findコマンドはいくつかのファイルを見つけることができず、別のファイルを見つけることができるという奇妙な状況が発生し、それらはすべてローカルパスに存在します。スクリーンショットとしての元のコード: 。ファイルはそこにあります:$ ls -lh ~/.config/fish/functions/ total 92k -rw-rw-r-- 1 echecod echecod 4.2k dec 20 16:42 __async_prompt.fish -rw-rw-r-- 1 echecod echecod 3.0k dec 20 16:42 done.fish -rw-rw-r-- 1 echecod echecod 597 dec 20 16:42 humanize_duration.fish -rwxrwxr-x 1 echecod echecod 5.2k dec 20 16:42 __informative_git_prompt.fish* -rwxrwxr-x 1 echecod echecod 1.4k dec 20 16:42 prompt_pwd.fish* -rw-rw-r-- 1 echecod echecod 61k feb 20 11:38 z.lua しかし、それらは見つかりません:$ find ~/.config -name z.lua $ find ~/.config -name prompt_pwd.fish 上位ディレクトリとその中のファイル:$ ls -ld ~/.config/fish/ drwx------ 2 echecod echecod 4096 feb 20 13:35 /home/echecod/.config/fish/ $ ls -lh ~/.config/fish/ total 24k lrwxrwxrwx 1 echecod echecod 46 dec 20 16:45 config.fish -> ../../dotfiles.d/fish/.config/fish/config.fish* -rw-r--r-- 1 echecod echecod 1.3k dec 7 11:00 fishd.dua-001 -rw-r--r-- 1 echecod echecod 14k feb 19 18:21 fishd.dua-buildserver000 -rw-r--r-- 1 echecod echecod 2.7k feb 19 10:47 fish_variables lrwxrwxrwx 1 echecod echecod 44 dec 20 16:45 functions -> ../../dotfiles.d/fish/.config/fish/functions/ これらは見つけることができます:$ find ~/.config -name config.fish /home/echecod/.config/fish/config.fish $ find ~/.config -name fish_variables /home/echecod/.config/fish/fish_variables $ find ~/.config -name functions /home/echecod/.config/fish/functions そして念のために(functions -> ../../dotfiles.d/fish/.config/fish/functions/):$ ls -lh ~/dotfiles.d/fish/.config/fish/functions/ total 92k -rw-rw-r-- 1 echecod echecod 4.2k dec 20 16:42 __async_prompt.fish -rw-rw-r-- 1 echecod echecod 3.0k dec 20 16:42 done.fish -rw-rw-r-- 1 echecod echecod 597 dec 20 16:42 humanize_duration.fish -rwxrwxr-x 1 echecod echecod 5.2k dec 20 16:42 __informative_git_prompt.fish* -rwxrwxr-x 1 echecod echecod 1.4k dec 20 16:42 prompt_pwd.fish* -rw-rw-r-- 1 echecod echecod 61k feb 20 11:38 z.lua findの何が問題になっていますか?fyi: ubuntu 16.04.3 lts amd64 検索(gnu findutils)4.7.0-git、/usr/bin/find
回答: ~/.config/fish/functionsはシンボリックリンクです。したがって、それは[私の強調]についてです: -p シンボリックリンクをたどらないでください。これはデフォルトの動作です。 findがファイルの情報を検査または出力し、ファイルがシンボリックリンクである場合、使用される情報はシンボリックリンク自体のプロパティから取得されます。 -l シンボリックリンクをたどります。 findがファイルに関する情報を検査または出力する場合、使用される情報は、リンク自体からではなく、リンクが指すファイルのプロパティから取得されるものとします[...]。 場合-lは有効であり、findは検索中にサブディレクトリへのシンボリックリンクを検出します。シンボリックリンクが指すサブディレクトリが検索されます。 (ソース) 使用する find -l。これはオプションではなく、オペランドです。パスの前に表示する必要があります。