
Estou escrevendo um script para criar um diretório nomeado com a data de hoje (aaaa_mm_dd) e, em seguida, mover todos os arquivos que terminam na data de hoje para esse diretório. Existe uma maneira melhor de mover os arquivos para o diretório, já que o que fiz também seleciona o diretório.
now=$(date '+%Y_%m_%d')
mkdir $now
mv *$now $now/
Responder1
mv *?"$now" "$now/."
garantirá que o diretório recém-criado não seja selecionado para movimentação, exigindo que haja pelo menos um caractere ( ?
) na frente do carimbo de data/hora.
Responder2
O find
comando pode filtrar tipos de arquivos, bem como nomes de arquivos.
Então acho que isso fará o que você deseja:
now=$(date '+%Y_%m_%d')
find . -name "*$now" -type f -print0 | xargs -0 mv -t $now/
embora você possa precisar pensar se há alguma estranheza em seus nomes de arquivos (como outros diretórios que contêm a sequência de datas) antes de executar isso em um lote grande.