J'ai utilisé une boucle pour copier les données d'un groupe externe vers mon répertoire de travail, en ajoutant le nom du dossier au début du nom du fichier. La boucle for est basée sur cette question précédente. Ajoute une partie du nom du dossier à tous les .gz qui s'y trouvent
Depuis que j'ai posé cette question, le groupe externe a simplifié sa structure de dossiers, mais a maintenant ajouté " (2) " à certains noms de dossiers (je n'ai pas la possibilité d'influencer la façon dont le groupe nomme ses fichiers, c'est une entreprise géante). L'espace a cassé ma boucle et j'ai besoin d'aide pour la réparer.
La structure des fichiers sur le groupe externe
Samples/SampleName1/Files/SampleID1_uniqueNumber.gz
Samples/SampleName2/Files/SampleID2_uniqueNumber.gz
Samples/SampleName3/Files/SampleID3_uniqueNumber.gz
Samples/SampleName3 (2)/Files/SampleID3_uniqueNumber.gz
Ce que je veux dans mon dossier de destination (tous les échantillons sont déplacés vers une seule destination)
SampleName1.SampleID1_uniqueNumber.gz
SampleName2.SampleID2_uniqueNumber.gz
SampleName3.SampleID3_uniqueNumber.gz
SampleName3.SampleID3_uniqueNumber.gz
Ma boucle for actuelle qui copie correctement tout sauf le dernier échantillon. Le numéro unique devrait être suffisamment unique pour empêcher les 2 SampleName3 de s'écraser l'un l'autre.
for f in ../pathToData/Samples/*/Files/*.gz;
do s=${f##../pathToData/Samples/};
s=${s%%/*};
cp $f "/destinationFolder/"$s"."${f##*Files/};
done
Comment puis-je effacer l'espace pour que cp voit " (2) " comme une partie du nom du fichier original et non " (2) " comme le dossier de destination ?