Nome do arquivo com data de modificação adicionada e atribuí-lo a uma variável

0

Eu quero encontrar um arquivo em um diretório Unix e se existir eu quero atribuir o nome do arquivo junto com seu carimbo de hora modificado para uma variável como a abaixo

variable=(find the file name, if exist add the filename with _a string _and modified time stamp)

É possível? Deve parecer com filename_string_modifieddate(yyyymmdd)

    
por user2310119 23.03.2017 / 07:33

2 respostas

0

Tente isto:

variable='find . putYourConditionHere -exec ls -l --time-style +(%Y%m%d): {} \;|sed 's/.*\(([0-9]*)\): \(.*\)/_string_modifieddate/''

Portanto, use find para encontrar seu arquivo, use a opção -exec exec ls com a opção --time-style para obter o formato desejado e finalmente sed para obter a ordem correta. Passe isso para sua variável.

Eu incluí o : na data porque um nome de arquivo não deve conter. Caso contrário, o script falharia nos nomes de arquivos, incluindo algo como () ou (42) .

    
por 23.03.2017 / 08:06
0
var=$(find -name yourfile -prune -printf '%f_%TY%Tm%Td\n')

Isso encherá a variável do shell var com yourfile_yyyymmdd iff yourfile.

Caso o seu find não entenda o printf primitives acima, você poderá fazer isso da seguinte maneira:

var=$(find -name yourfile -prune -exec sh -c 'printf "%s_%s\n" "$1" "$(stat -c "%y" "$1" | cut -d " "-f1 | tr -d "-")"' {} {} \;)
    
por 23.03.2017 / 09:24