Package Renommer des fichiers se terminant par le point
J'ai un grand serveur de fichiers unix avec une grande ressource SMB. Il sert des clients Mac, Linux et Windows. La plupart des fichiers de cette boîte ont été déplacés là-bas avec Mac Xserve. L'un des moyens de sauvegarder une ressource commune - à travers la boîte Windows. Ce logiciel de sauvegarde spécifique ne fonctionne pas s'il y a des caractères qui ne l'aiment pas dans les noms de fichiers.
J'ai réussi à corriger la plupart des problèmes avec les noms de fichiers, mais je lutterai avec des fichiers qui se terminent au point. Par exemple:
J'essaie de trouver un moyen de lot renommer tous les fichiers se terminant avec le point, sur le même nom sans point. Alors
devient
Fonctionne pour trouver des fichiers. J'ai essayé de passer à travers sed:
qui effectue son travail dans la console, mais ne renommera pas de fichiers. C'est la partie avec laquelle je lutte.
J'ai réussi à corriger la plupart des problèmes avec les noms de fichiers, mais je lutterai avec des fichiers qui se terminent au point. Par exemple:
filename.
newfile.txt.
stupid old file.
J'essaie de trouver un moyen de lot renommer tous les fichiers se terminant avec le point, sur le même nom sans point. Alors
filename.
devient
filename
find . -name "*."
Fonctionne pour trouver des fichiers. J'ai essayé de passer à travers sed:
find . -name "*." | sed 's/.$//'
qui effectue son travail dans la console, mais ne renommera pas de fichiers. C'est la partie avec laquelle je lutte.
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
3 réponses
Christine
Confirmation de:
(appelé soit
ou
):
ou version util-linux (appelé soit
ou
):
Si vous exécutez la commande sans arguments et obtenez quelque chose de similaire à:
Utilisation: Renommer [-v] [-n] [-f] perlexpr [Noms de fichiers]
Ensuite, ceci est une version du script. Perl.
Sorte de:
rename.ul: Pas assez d'arguments
Utilisant: rename.ul [Paramètres] Fichier de remplacement d'expression ...
Options: -v, --verbose, Expliquez ce qui est fait -V, --version
Afficher des informations sur la version et la sortie -h, --help Affichez cette aide et sortie
signifie cette version util-linux.
Dominique
Confirmation de:
Si vous souhaitez renommer à la fois des fichiers et des catalogues avec des points de terminaison:
Ou si vous souhaitez renommer uniquement les fichiers:
où
Scénario simplement:
(N'oubliez pas non plus de rendre le script exécutable:
) 2
Alice
Confirmation de:
Il limite la recherche uniquement par des fichiers avec un point à la fin. (Sinon, il correspond au catalogue de travail actuel, '.'), Puis effectue un fragment cité de la coquille (
) Pour chaque fichier trouvé. Dans le fragment de la coquille, il utilise l'expansion et le remplacement du paramètre bash Pour enlever le symbole final '.'. Un autre bruit de la rangée à la fin est nécessaire pour find -exec:
Le texte de la coïncidence trouvée,
nécessaire pour compléter la chaîne exec, Et je pense que
rapports exec Transférer à {} comme un paramètre (
) à
équipe. Honnêtement, il s'agit d'une utilisation spécifique. -exec Pour moi dans une nouveauté, je l'ai trouvé
https://askubuntu.com/question ... -line
.
Substitution du bit bash Assez simple, et je l'utilise souvent pour renommer des fichiers, par exemple
Supprimer '.JPG' du nom du fichier et remplacez-le sur '.jpg'
Si vous voulez toujours utiliser sed, pas expansion bash, Il semble que cela fonctionnera:
Au début, j'ai essayé de résoudre ce problème sans causer
appeler
, Mais il n'aimait pas la divulgation {} En essayant d'effectuer sed (ou dans l'exemple précédent de substitution bash).
Notez également que vous devez mettre "" autour des noms de fichiers expansibles (par exemple, {} ou $ 1, Selon l'exemple), Comme il y a des espaces dans vos fichiers. Cela peut toujours ne pas fonctionner en fonction de laquelle les caractères spéciaux figurent dans votre fichier. (par exemple, "dans le nom de fichier" Appelle les problèmes).