[Linux-bruxelles] liens symboliques au lieu de cp

Didier Heekhout Test54Test at hotpop.com
Lun 24 Oct 10:52:43 CEST 2005


Louis Lambeau a écrit :
> J'ai déjà ça mais comme j'ai dit je suis pas un pro de shell donc il
> existe surement plus beau 
> 
> 
> CURRENT=`pwd`
> for FILE in *; do
>   if test -f "$FILE";
>   then
>     EXT=${FILE##*.}
>     if test -d $EXT; then
>       ln -s "$CURRENT/$FILE" $EXT
>     else
>       mkdir $EXT
>       ln -s "$CURRENT/$FILE" $EXT
>     fi
>   fi
> done
> 
> J'aimes pas vraiment cette utilisation que je fais de CURRENT pour avoir
> le répertoire courant, je pense qu'on peux faire autrement. De même : le
> if avec deux fois la création du lien symbolique peux sans doute etre
> évitée par un elif ou autre. Ca marche c déja ça. Meme avec des noms
> avec espaces et doubles extensions (sait on jamais).
> 
> Louis
> 
> On sam, 2005-10-22 at 20:21 +0200, Aldo wrote:
> 
>>On Sat, Oct 22, 2005 at 04:41:38PM +0200, Louis Lambeau wrote:
>>
>>>Yop,
>>>
>>>moi j'utilises souvent celui ci : (mais il trie selon le type mime avec
>>>sous dossiers... exemple : audio/mpeg/)
>>>
>>>for i in *; do 
>>>  dir="$(file -b -i "$i")" 
>>>  mkdir -p "$dir" 
>>>  mv "$i" "$dir" 
>>>done
>>>
>>>je ne sais pas si ca t'aides...
>>>
>>
>>ça peut déjà aider,
>>sauf que si je lis bien, ton script fais un cp là où moi je veux le 
>>contraire, à savoir un répertoire de liens (ln) pour que tu aies un 
>>répertoire unique, fun/ par exemple, contenant tout type de fichiers, 
>>mais l'impression d'avoir les mp3 dans mp3/, les oggs dans ogg/ etc, 
>>lorsque tu va dans ces répertoires, mais donc ce seraient des liens 
>>symboliques;
>>toi tu copies;
>>ceci dit c fait très intelligement, pas mal.
>>
>>Aldo.
>>
>>PS: je ne suis ni débutant ni guru, je suis end-user, (c. ta questio 
>>ndans ton prochain mail).
>>
>>
> 
> 
> 

Une autre solution consisterait à utiliser un 'unionfs' :

1. A l'aide d'un script, 'mv' des fichiers vers des directories séparés 
par type de fichier
2. créer un "directory" (p.ex. 'allFiles') qui est l'union des fichiers 
des directories (p.ex. 'd1', 'd2' et 'd3') :
	#mount -t unionfs -o dirs=d1:d2:d3 none allFiles

Avantage : pas de liens symboliques à gérer (utile lors d'ajouts ou de 
suppressions)
Inconvénient : performances un peu dégradées
Inconvénient : tous les fichiers doivent se trouver dans un même FS.






Plus d'informations sur la liste de diffusion Linux-bruxelles