Verificar subdiretório

0

A) Eu usei o seguinte código para obter a data de modificação de um arquivo. Mas isso também está selecionando os subdiretórios e, portanto, retornando um erro. Como eu posso consertar isso?

for file in $1/*; do
        echo 'stat -c %y $file | cut -d ' ' -f1'
done

$ 1 é o diretório que estou passando

B) Também existe alguma maneira de fazer isso. Que preciso passar um diretório e um intervalo de datas como argumento de linha de comando e listar o arquivo e a data de modificação contida nesse intervalo de datas. Por exemplo, output.sh /home/user/desktop 2014-10-07 2014-11-17 deve listar todos os arquivos neste diretório que são modificados neste intervalo de tempo

    
por Rakesh R Nair 11.11.2014 / 06:56

1 resposta

1

Para localizar todos os arquivos no diretório $1 com mais de 1000 minutos e menos de 2000 minutos:

find "$1" -maxdepth 1 -type f -mmin +1000 -mmin -2000

Se você quiser pesquisar recursivamente em subdiretórios, remova -maxdepth 1 .

Se você preferir especificar o tempo em dias inteiros, em vez de minutos, use -mtime :

find . -maxdepth 1 -type f -mtime +20 -mtime -26

Faz loop sobre arquivos enquanto ignora diretórios

-d pode ser usado para testar diretórios e continue irá ignorá-los:

for file in "$1"/*; do
    [ -d "$file" ] && continue
    echo $(stat -c %y $file | cut -d ' ' -f1)
done
    
por 11.11.2014 / 07:16