Shell Script para verificar o subdiretório [closed]

-1

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 posso consertar isso?

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

$1 é o diretório que estou passando.

Também existe alguma maneira de fazer isso. Que preciso transmitir um diretório e um intervalo de datas como argumento da 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 foram modificados neste intervalo de tempo.

    
por Rakesh R Nair 11.11.2014 / 07:10

2 respostas

0

Com relação à parte A da sua pergunta, aqui está uma referência para os testes de arquivo padrão.

Em particular, o que você pode fazer é:

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

Quanto à parte B, consulte this pergunta stackoverflow.

    
por BostonHiker 11.11.2014 / 07:16
0

Para a parte A, uma abordagem mais eficiente:

find $1 -maxdepth 1 ! -type d -exec stat -c "%y" {} + | cut -d' ' -f1

find é excelente para filtrar com base no tipo e exec com + deve executar muito menos stat process. Piping toda a saída para cut significa que temos que executar cut apenas uma vez. E realmente não há necessidade de fazer

echo 'some command'

O único benefício é converter a saída de várias linhas em uma única linha, o que não é aplicável ao seu caso de qualquer maneira.

    
por muru 11.11.2014 / 09:30