Como verificar se um grupo de arquivos é legível?

1

Eu tenho que verificar se um grupo de arquivos é legível. Eu sei como eu iria verificar um arquivo usando [ -r file.txt ] , mas como eu iria escrever um loop que verificaria vários arquivos (incluindo diretórios)?

Por exemplo, file1.txt file2.txt directory1 directory2 file3.txt .

    
por Yasuo 21.04.2015 / 20:53

2 respostas

1

A função a seguir verifica se todos os seus argumentos são arquivos legíveis:

files_are_readable () {
  for x do
    [ -r "$x" ] || return 1
  done
}
    
por 22.04.2015 / 03:06
-1

No bash você poderia fazer

for file in file1.txt file2.txt directory1; do
    if [[ -r $file ]]; then
        ...
    fi
done

e a parte que é a lista de arquivos pode ser qualquer coisa onde você possa ler cada "palavra" separada por espaço e colocar em $ file, então você poderia, digamos

for file in $(find .); do
    ...
done

se você quiser fazer algo com todos os arquivos e diretórios em seu diretório atual ou qualquer outra coisa parecida. Tenha cuidado com o exemplo com find, no entanto, se você tiver espaços em qualquer um dos seus arquivos ou nomes de diretórios, o arquivo $ ainda estará sendo dividido no espaço, de modo que ele obteria cada parte como um "arquivo" diferente para tentar

    
por 21.04.2015 / 20:58