it-swarm-ja.com

findコマンドは存在するファイルを見つけることができません

findコマンドはいくつかのファイルを見つけることができず、別のファイルを見つけることができるという奇妙な状況が発生し、それらはすべてローカルパスに存在します。

スクリーンショットとしての元のコード:

screen

ファイルはそこにあります:

$ 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
16
CodyChan

~/.config/fish/functionsはシンボリックリンクです。したがって、それは[私の強調]についてです:

-P
シンボリックリンクをたどらないでください。これはデフォルトの動作ですfindがファイルの情報を検査または出力し、ファイルがシンボリックリンクである場合、使用される情報はシンボリックリンク自体のプロパティから取得されます。

-L
シンボリックリンクをたどります。 findがファイルに関する情報を検査または出力する場合、使用される情報は、リンク自体からではなく、リンクが指すファイルのプロパティから取得されるものとします[...]。 場合-Lは有効であり、findは検索中にサブディレクトリへのシンボリックリンクを検出します。シンボリックリンクが指すサブディレクトリが検索されます

(ソース)

使用する find -L。これはオプションではなく、オペランドです。パスの前に表示する必要があります。

26