Exclui arquivos de uma data específica no unix?

1

Eu tenho que excluir arquivos de ontem, estou fazendo algo parecido com isto

ls -l | grep 'Feb 15'|awk| xargs

Eu não posso usar o awk, já que os nomes dos meus arquivos têm espaços neles, então eu não posso separá-los na saída de ls -l.

Alguém pode me ajudar com isso?

    
por Dude 17.02.2013 / 16:11

2 respostas

2

primeiro faça:

find /path/to/search/ -type f -mtime 1

para ter certeza de que você está vendo os resultados adequados -mtime n significa n * há 24 horas então use -print0 para contornar os espaços

find /path/to/search/ -type f -mtime 1 -print0

em seguida, para remover adicionar um canal a xargs

find /path/to/search/ -type f -mtime 1 -print0 |xargs -0 rm
por 17.02.2013 / 21:33
0

Estou baseando minha resposta no fato de que você está tendo problemas para lidar com nomes de arquivos com espaços neles.

Eu tenho um aplicativo Linux que tem que lidar com arquivos cujos nomes contenham espaços incorporados. A seguir, são extraídos do meu script de shell bash que me permitem usar um loop for para encontrar os dois arquivos e fazer algo sobre eles.

No meu caso, foi para passá-los para um programa Clojure que identificaria quais arquivos eram baseados em suas assinaturas de coluna. Ambos os arquivos são arquivos .csv. A injeção de dinheiro está alterando o IFS e restaurando seu valor original quando você terminar. Isso permite que $ fnam contenha o nome do arquivo se ele tiver espaços embutidos nele.

# $IFS is internal file separator.
# The following little code snippet takes into account space-separated files.
# We set the file separator value to something other than space.

ORIGINAL_IFS=$IFS
IFS=$(echo -en "\n\b")

# You have to fond both types of files .CSV or .csv. 
#This is the way to do it. cmn 11/1/2012

for fnam in 'find bene_gic_in -maxdepth 1 \
-type f \( -name \*.csv -o -name \*.CSV \) \
-exec echo "{}" \;'
do

# Please note that $fnam may have embedded spaces in it, at this point, 
# you could check # for the name, and make a decision about what to do 
# with it, like 
# 

if [ "$fnam" = "a file name i expect" ]; then
# do something.
   mv $fnam file_type1
fi

.
.
.
# Bring back original line separator value.
IFS=$ORIGINAL_IFS
    
por 17.02.2013 / 17:07

Tags