![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Déplacez tous les fichiers dans une arborescence de répertoires à un signal de répertoire? | briandanielz | UNIX pour les nuls Questions et réponses | 2 | 06-15-2008 05:20 PM |
| Vu les fichiers dans un répertoire? | skyineyes | De programmation et de script Shell | 3 | 07-16-2007 03:16 AM |
| MV des fichiers d'un répertoire de la structure (plusieurs classes) à d'autres la structure de répertoire | srmadab | UNIX for Advanced & Expert Users | 4 | 09-13-2006 04:01 PM |
| copier des fichiers d'un répertoire vers un autre répertoire | zip_zip | UNIX pour les nuls Questions et réponses | 5 | 09-14-2003 06:16 PM |
| déplacer des fichiers d'un répertoire Unix à un répertoire de Windows | gleads | UNIX pour les nuls Questions et réponses | 2 | 08-29-2002 08:42 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
J'ai 10000 fichiers dans un répertoire. Le nom est quelque chose comme:
1.dat 2.dat 3.dat 4.dat ..... ..... ..... 1000.dat. ---- ----- Les fichiers ne sont pas triées. Je veux aller de 500 premiers largerst les fichiers de ce répertoire dans un autre répertoire. Suivant 500 plus grandes des fichiers vers un autre répertoire. ce qui serait la simple korn shell script pour ce problème? merci Dernière édition par Bhanu72; au 07.15.2008 07:31 PM.. |
|
||||
|
Voici un titre. Retirez le prints lorsque vous avez terminé les essais. Le 2 queue est de sauter le total affiché par blocs ls-l. Cela ne fonctionnera pas si l'un des noms de fichiers contenant des espaces.
Code:
i=0
split=1000
ls -l | tail +2 | sort -rn -k 5,5 | awk '{print $NF}' | while read f
do
(( i%${split}==0 )) && print mkdir subdir$(( i/${split} ))
print mv $f subdir$(( i/${split} ))
(( i=i+1 ))
done
|
|
||||
|
Tout d'abord, vous devrez déposer votre liste triée par taille de fichier
#! / bin / ksh Searchpath \u003d / whereever0 LowerSizeFilePath \u003d / whereever1 UpperSizeFilePath \u003d / whereever2 # cd $ searchpath ls-e | egrep-v "/$|->" | cut-C31-41, 63 - | sort-n-k 1n, 10 | cut-c12-> / tmp / filelist ~ # ^ ^ ^ ^ ^ # | | | | + Obtenir le fichier # | | | + - Tri des fichiers par taille de fichier # | | + - Get seulement la taille du fichier et le nom du fichier # | + - Descendez la liste des liens et des répertoires soft entrées # + - $ CWD liste élargie # # Vous pouvez envoyer la liste à un fichier temporaire avec "> / tmp / filelist ~" # # Il est nécessaire de connaître le nombre de fichier avec FileCount \u003d `cat / tmp / filelist ~ | wc-l` HeadSize \u003d `expr $ FileCount / 2» TailSize \u003d `expr $ FileCount - $ HeadSize» # mv `head - $ HeadSize / tmp / filelist ~` $ LowerSizeFilePath mv `tail - $ TailSize / tmp / filelist ~` $ UpperSizeFilePath rm / tmp / filelist ~ |
|
||||
|
Salut
merci pour la solution. Mais pour une raison quelconque, il ne s'agit pas de travail ou de mai, je ne suis pas la compréhension. Pouvez-vous s'il vous plaît donner plus de détails: Pourquoi utilisez-vous egrep? Quel est-il vraiment faire? C 'est une faute de frappe que vous utilisez ls-e au lieu de ls-l? merci pour votre aide. |
|
||||
|
Bhanu72:
J'ai quand à mon serveur et tryed le script, et il n'a fonctionné. Mais lorsque s'est heurtée à un autre serveur "ls-e" n'est pas supporté. Je regarde différence sur SunOS et notez que le serveur ne supporte pas le "-e" option pour "ls" est inférieur a patche pour SunOS 5.10. Donc je ne peux garantir que ce script mai travail sur Sun Solaris 5.10 Generic_125100-10. J'ai changé le script à utiliser "ls-l", mais besoin de changer le "cut" réglage. Code:
ls -l | egrep -v "/$|->" | cut -c31-41,55- | sort -n -k 1n,10 | cut -c13- > /tmp/filelist~ Mes meilleures salutations. Luis Ramirez |
|
||||
|
Salut,
J'ai essayé avec plusieurs petits fichiers. split \u003d 5. Il a bien fonctionné. Dans votre code, vous avez créé le répertoire dans le script. Mais dans mon cas, le répertoire existe déjà. Je dois donc faire simple modification. Merci pour votre aide. I appreciate it. Bhanu72 |
![]() |
| Bookmarks |
| Tags |
| déplacer des fichiers, solaris |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|