Nous utilisons un serveur Ubuntu qui envoie automatiquement les fichiers FTP d'un client et ces fichiers, ces derniers temps, apparaissent maintenant sous le nom de ... 'file.csv;' 'file2.csv;
J'ai essayé, sans succès, de formuler des solutions bash et Python sans succès. J'essaie simplement de supprimer les guillemets simples et les points-virgules et de conserver ce qui reste. Cela n'a pas besoin d'être bash, cela pourrait être python ou même perl. J'ai inclus ci-dessous le code de ce qui ne fonctionne pas. Je n'arrive même pas à obtenir une liste d'annuaire. Est-ce que quelqu'un peut-il me montrer la bonne direction?
for i in \'* do echo $i done
Remarque: code corrigé pour supprimer $ echo 'errant
3 Réponses :
Utilisez find ... -exec rename
comme ceci:
conda install rename
Exemple:
find ... -print0 | xargs -0 ...
Vous pouvez également renommer en bloc pour la vitesse à l'aide de xargs
, tels que
# Create example input files: $ touch "f'o''o'" "b;a;;r;" "b';a;'';z;'" # Build the command by first confirming that `find` finds them all: $ find . -name "*[;']*" ./f'o''o' ./b';a;'';z;' ./b;a;;r; # Find and rename them, one by one: $ find . -name "*[;']*" -exec rename "tr/';//d" {} \; # Confirm that rename worked as expected: $ ls -1rt | tail -n 3 foo bar baz
mais dans votre cas, je suppose que renommer les fichiers un par un est assez rapide.
Le rename
utilitaire de ligne de commande se présente sous de nombreuses formes. La plupart d'entre eux devraient travailler pour cette tâche. J'ai utilisé la rename
la version 1.601 par Aristote Pagaltzis. Pour installer rename
, téléchargez simplement son script Perl et placez-le dans $PATH
. Ou installez rename
utilisant conda
, comme ceci:
find . -name "*[;']*" -exec rename "tr/';//d" {} \;
vous pouvez les renommer puis faire le travail google.com/amp/s/www.geeksforgeeks.org/...
Brillant! Je ne peux pas vous remercier assez ... JW
import os filesInDirectory = os.listdir(Path) for filename in filesInDirectory: if "'" in filename: filename.replace("'", "") elif ";" in filename: filename.replace(";", "") elif ("'" and ";") in filename: filename.replace("'", "") filename.replace(";", "") Using Python
Vous pouvez commencer par essayer ce script pyhon 3. Je l'ai testé uniquement sous Windows.
import os folder = "" for root, dirs, files in os.walk(folder, topdown=False): for fn in files: path_to_file = os.path.join(root, fn) if "'" in fn or ";" in fn: print('Removing special characters from file: ' + fn) new_name = fn.replace("'", '').replace(";", '') os.rename(path_to_file, os.path.join(root, new_name))
utilisez shellcheck.net . Si vous collez votre code avec le bon shebang, cela vous indique que vous essayez d'utiliser
echo
comme variable, ce qui n'est probablement pas ce que vous voulez.