você está aqui: Home  → Arquivo de Mensagens

catalog

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 03 de Julho de 1997

Às vezes, e se você tem espaço em disco para tanto, você ir acumulando inúmeros arquivos em seu diretório home.

Ou seja, você pode (e certamente vai) se esquecer de coisas importantes que possui e pode também vir a deixar muito lixo se acumular dentro de seu computador.

Uma shell script interessante que pode lhe ajudar a reencontrar velhos amigos e se livrar daquilo que não interessa mais, é o script catalog, incluído nesta dica.

Ele irá gerar uma listagem do conteúdo de seu diretório, ou de qualquer outro, que você poderá então analisar e tomar as decisões adequadas.

Veja um exemplo da saída deste comando:

[ TT_DB ]
  .   access_table.ind 
  .   access_table.rec 
  .   file_object_map.ind 
 *TT_DB 
[ adm ]
  . [ acct ]
foreach: No match.
  .  *acct 
  . [ cron ]
[ bin ]
  .  *CC_r4 
  .  *Mail 
  .  *Rsh 
  . [ X11 ]
  .   .  *X 
  .   .   X.exp 

Os diretórios encontram-se delimitados por "[" e "]". Os pontos significam a profundidade da estrutura de diretórios. Nomes de arquivos precedidos por "*" indicam que o arquivo é executável.

E finalmente, o script catalog. Este script foi escrito por Ken Turkowski, e faz parte de um conjunto enorme de scripts e dicas de configuração de shells compilada por Nancy Blachman e que se encontra hoje em http://ftp.unicamp.br/pub/unix-c/info/unix-tricks.txt.gz.

#!/bin/csh
# 
# catalog - produce complete file structure list from directory
# Parameters: 	1: directory name (optional)
# 		2: indentation string (empty on first call)
# 
# Produces on standard output the file structure emanating from
#   the current directory.  Each descent into a subdirectory
#    is indicated by further indentation.  Directories are indicated
#    by surrounding [], and executable files are prefaced with a *.
# 
if ( $#argv == 0) then
   echo "file structure from directory ""pwd"""
   date
   echo ''
else
   cd $1
endif
foreach i ( * )
   if ( -d $i ) then
	 echo "${2}[ $i ]"
	 $0 $i "$2  . "
   endif
	 if ( "$i" != '*' ) then
	    if ( -x $i ) then
	       echo "${2} *$i "
	    else
	       echo "${2}  $i "
	    endif
	 endif
   endif
end


Veja a relação completa dos artigos de Rubens Queiroz de Almeida