estou tentando encontrar meus arquivos .csv e então cd em seu diretório:
find Documents/notes -type f -name "*.csv" | head -1 | xsel -b
isso copia o primeiro diretório de arquivo para minha área de transferência e eu gostaria de executar:
cd $(xsel -b)
mas é claro que não posso porque inclui o nome do arquivo que não é um diretório.
Existe alguma maneira de omitir o nome do arquivo? Existe uma maneira melhor de fazer isso?
Usando o
bash
shell, ative o**
padrão (corresponde a like*
, mas também ultrapassa/
os nomes de caminho), expanda o padrãoDocuments/notes/**/*.csv
e depoiscd
para o diretório da primeira correspondência:Com
zsh
, que já tem o**
padrão habilitado por padrão, isso pode ser abreviado paraO qualificador glob
([1]:h)
retorna o nome do diretório ("h" como em "cabeça do caminho") da primeira correspondência do padrão fornecido. Altere este qualificador para(.[1]:h)
para fazer com que o padrão corresponda apenas a arquivos regulares (ou links simbólicos para tais arquivos).Sim, usando apenas
find
(precisa-quit
de suporte):ou
quebra na primeira partida.
-quit
: