Créer conditionnellement un lien symbolique par taille de fichier en utilisant find exec ubuntu 10.04

0

J'ai un problème intéressant. J'essaie de créer des liens symboliques dans un seul dossier, pour tous les fichiers d'un répertoire dont la taille est supérieure à celle spécifiée.

Pour clarification, voici un exemple:

/Files
    /Large_Files
        /LargeFile1_symlink
        /LargeFile2_symlink
    /Folder1
        /file_a
        /file_b
    /Folder2
        /LargeFile1
    /Folder3
        /LargeFile2
        /file_c

Ce que j'ai jusqu'ici pour essayer d'accomplir ceci est:

find -size +102400 -exec ln -s $PWD/{} Large_Files/ \;

Cependant, cette découverte produit

./LargeFile1

Donc, ma commande symlink produit

ln -s /Files/Folder2/./LargeFile1 Large_Files/

Ma question est la suivante: serait-il possible d’utiliser la commande basename pour ne séparer que le nom du fichier afin que cette commande fonctionne? Ou est-ce que quelqu'un a une suggestion sur la façon de faire cela sans écrire un script, ou me donne un exemple sur l'écriture d'un script?

Je n'avais jamais fait de script auparavant, mais je connais Java, mais je ne veux pas prendre le temps de faire tout cela en Java.

Merci pour toute aide!

Edit: ajouter des tags

jmlw
la source

Réponses:

0
$ find /usr/lib -size +20M  -size -25M -exec sh -c 'ln -s "{}" /tmp/huge/`basename {}`' \;
find: `/usr/lib/mozilla': Permission denied
geee: /
$ ll /tmp/huge/
total 0
lrwxrwxrwx 1 jaroslav jaroslav 45 Nov  9 02:55 HSghc-6.12.3.o -> /usr/lib/ghc-6.12.3/ghc-6.12.3/HSghc-6.12.3.o
lrwxrwxrwx 1 jaroslav jaroslav 54 Nov  9 02:55 libHSbase-4.2.0.2_p.a -> /usr/lib/ghc-6.12.3/base-4.2.0.2/libHSbase-4.2.0.2_p.a
lrwxrwxrwx 1 jaroslav jaroslav 56 Nov  9 02:55 libHSCabal-1.8.0.6_p.a -> /usr/lib/ghc-6.12.3/Cabal-1.8.0.6/libHSCabal-1.8.0.6_p.a
lrwxrwxrwx 1 jaroslav jaroslav 59 Nov  9 02:55 libHSghc-6.12.3-ghc6.12.3.so -> /usr/lib/ghc-6.12.3/ghc-6.12.3/libHSghc-6.12.3-ghc6.12.3.so
lrwxrwxrwx 1 jaroslav jaroslav 33 Nov  9 02:55 libQtWebKit.so.4.9.2 -> /usr/lib/qt4/libQtWebKit.so.4.9.2
lrwxrwxrwx 1 jaroslav jaroslav 26 Nov  9 02:55 libxul.so -> /usr/lib/firefox/libxul.so
lrwxrwxrwx 1 jaroslav jaroslav 20 Nov  9 02:55 opera -> /usr/lib/opera/opera

links

Ярослав Рахматуллин
la source
Merci beaucoup! Je pensais être proche de ma commande. J’ai eu un problème avec ce qui précède, j’ai nécessaire d'ajouter le commutateur -a basename, sinon le nom de fichier est coupé de manière aléatoire (les noms de fichiers ont des espaces). @ Ярослав Рахматуллин
jmlw
Utilisez des guillemets autour d'arguments avec des espaces.
Ярослав Рахматуллин