Eu descobri qual era o problema, o Emacs criava links simbólicos quebrados:
$ file .#xxxx
.#xxxx: broken symbolic link to '[email protected]:1393008109'
Eu uso muito o find | xargs grep quando trabalho em código fonte grande e quando não salvei um arquivo no Emacs ele cria .#SomeFile e grep dá erro de que não existe tal arquivo (não estou incluindo porque está localizado )
O mesmo quando eu corro:
ls -A dir/ | grep '^\.#' | xargs file
Eu tenho:
.#SomeFile: ERROR: cannot open '.#SomeFile' (No such file or directory)
Por que isso?
Eu descobri qual era o problema, o Emacs criava links simbólicos quebrados:
$ file .#xxxx
.#xxxx: broken symbolic link to '[email protected]:1393008109'
O problema realmente não tem qualquer coisa para fazer com dotfiles. Quando você diz:
ls -A dir/
exibiria o conteúdo do diretório, por exemplo listar arquivos como foo , bar , ... Agora, quando você tentar redirecionar a lista para xargs , o último tentará localizar aqueles no diretório atual e passar / falhar dependendo sobre se esses nomes de arquivos existem no diretório atual e dir ou não.
Crie um symlink para o arquivo desejado em dir em seu diretório atual e você notaria que seu comando começaria a funcionar:
ln -s dir/.#Somefile .
Você deve usar find :
find dir -maxdepth 1 -name '\.#*' | xargs file
e você veria os resultados esperados .
Você também pode consultar Analisando ls .