Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier dans un autre dossier un fichier en GLI ?

21 réponses
Avatar
SAM
Salutatous,

une bonne âme pourrait-elle me donner la ligne de commande à écrire pour
- copier un fichier depuis un dossier
- dans un autre dossier
- *et* en lui changeant le nom au passage

trucmachin -x dossier_1/fichier dossier_2/ prefixe + fichier

1001 mercis

--
sm

10 réponses

1 2 3
Avatar
Herve
Je ne comprends pas le titre de l'enfilade.
Que veut dire "GLI" ?

Hervé
Avatar
Le Moustique
Herve a écrit :
Je ne comprends pas le titre de l'enfilade.
Que veut dire "GLI" ?



Le stylo de SAM a dérapé (sur le clavier), il voulait écrire CLI.


--
/)
-:oo= Guillaume
)
Je nettoyais mon clavier, et le coup est parti tout seul.
Avatar
SAM
Le 9/25/08 8:36 AM, Herve a écrit :
Je ne comprends pas le titre de l'enfilade.
Que veut dire "GLI" ?



Où ça GLI ?

il faut lire CLI bien sûr.

Command-line interface ou "Interface de ligne de commande",

<http://fr.wikipedia.org/wiki/Command-line_interface>

--
sm
Avatar
SAM
Le 9/25/08 6:56 AM, patpro ~ patrick proniewski a écrit :
In article <48daa403$0$967$,
SAM wrote:

J'ai essayé avec tout sur une ligne, ça ne fonctionne pas



quel intérêt ?



Comme ça, pour voir.
(plus facile à copier-coller ?)

Tout sur une ligne ça donnerait :

for fichier in *; do cp ${fichier} "/destination/du/prefix_${fichier}";
done



J'étais certain d'avoir essayé :-(

pour commencer une nouvelle commande ?



ctrl-c



OK.

Aaaarrghhh ! c'est vrai que les noms avec espaces et accentués ça n'a
pas l'air de plaire :-(



ha ben ça...j'avais prévenu.



Pourtant je glisse le fichier sur le terminal qui m'en traduit le nom,
du genre :
Trav Envoye314201
pour :
Trav Envoyé


Ha! j'ai finalement trouvé une espèce de tuto pour le CLI Unix :
<http://fr.wikipedia.org/wiki/Commandes_UNIX>

Bon, je n'arrive quand même pas à transformer en exécutable
ce petit test-démo
L'aide Apple semble dire que c'est possible avec chmod
mais je n'ai peut-être pas compris ni comment faire ni ce qu'était un
"exécutable" ?


--
sm
Avatar
Herve
On 25 sep, 09:40, SAM
wrote:
Command-line interface ou "Interface de ligne de commande",



C'est sûr que si tu avais nommé ton enfilade "Copier dans un autre
dossier un fichier en ligne de commande ?", personne n'aurait
compris ;-)

Hervé
Avatar
Nicolas-Michel_REMOVE
SAM wrote:

>> Aaaarrghhh ! c'est vrai que les noms avec espaces et accentués ça n'a
>> pas l'air de plaire :-(
>
> ha ben ça...j'avais prévenu.

Pourtant je glisse le fichier sur le terminal qui m'en traduit le nom,
du genre :
Trav Envoye314201
pour :
Trav Envoyé



soit tu peux déterminer un point commun avec tous ces fichers, soit tu
fais faire une liste par l'ordi et tu effacea ceux que tu ne veux pas.

Dans le premier exemple, supposons que tu veux tous les jpg d'un
dossier, ça ferait ça :

-----------
#!/bin/bash
dest="/chemin/du/dossier/de/destination"
mkdir -p $dest
cd /mon/dossier/source
IFS='
'
for i in `find . -name "*.jpg" -maxdepth 1`
do
cp "$i" "$dest/prefix-$i"
done
--------------

Dans le cas où tu ne peux pas sélectionner les fichiers d'après un
critère "informatisable", tu peux faire une liste comme ceci :
ls -1 >~/list.txt

ensuite tu édite le ficher et tu effaces les lignes en trop.

Ensuite dans le script tu remplaces
for i in `find . -name "*.jpg" -maxdepth 1`
par
for i in `cat ~/list.txt`

A présent juste pour expliquer le script ...

#!/bin/bash
est la première ligne du script, ça indique avec quel shell le script
doit être interprété. On peut activer le debug mode en y ajoutant -vx :
#!/bin/bash -vx

dest=.... est le dossier vers lequel tu veux copier tes fichiers

mkdir -p vérifies que la destination existe et sinon ça la crée

cd ça c'est pas très propre, un nom en dur dans un script.
Mais je ne voulais pas compliquer.

IFS est la variable qui définit le séparateur.
en gros ça sert à ne pas se prendre la tête avec les espace
ou les tab dans le nom des fichiers.

for ... apparement tu connais

find ... cherche tous les fichier dont le nom se termine par .jpg
dans le dossier courant et sans descendre dans des sous-dossiers



Ha! j'ai finalement trouvé une espèce de tuto pour le CLI Unix :
<http://fr.wikipedia.org/wiki/Commandes_UNIX>

Bon, je n'arrive quand même pas à transformer en exécutable
ce petit test-démo



sudo chmod +x /le/script

Quel éditeur de texte tu utilises au fait ?

L'aide Apple semble dire que c'est possible avec chmod
mais je n'ai peut-être pas compris ni comment faire ni ce qu'était un
"exécutable" ?



Il y a un "piège" dans l'interface graphique Apple :
En GUI tu peux juste régler les permissions de lecture et d'écriture
alors qu'il y en a 3 en réalité, read, write et execute.

ce execute fonctionne différement si on l'applique à un dossier ou à un
fichier. Si un dossier est exécutable, on peut l'ouvrir.
Si un fichier est exécutable, ça en fait une "application" qu'on peut
exécuter.


--
Nicolas Michel
Avatar
SAM
Le 9/25/08 2:55 PM, Michel Nicolas Alex a écrit :
SAM wrote:

Aaaarrghhh ! c'est vrai que les noms avec espaces et accentués ça n'a
pas l'air de plaire :-(


ha ben ça...j'avais prévenu.


Pourtant je glisse le fichier sur le terminal qui m'en traduit le nom,
du genre :
Trav Envoye314201
pour :
Trav Envoyé



soit tu peux déterminer un point commun avec tous ces fichers, soit tu
fais faire une liste par l'ordi et tu effacea ceux que tu ne veux pas.

Dans le premier exemple, supposons que tu veux tous les jpg d'un
dossier, ça ferait ça :



Je voudrais les fichiers sans suffixe et qui ne sont pas des dossiers.

for i in 'find . -name !"*.*" . -type "file" -maxdepth 1'

c'est bon ?

-----------
#!/bin/bash
dest="/chemin/du/dossier/de/destination"
mkdir -p $dest
cd /mon/dossier/source
IFS='
'
for i in `find . -name "*.jpg" -maxdepth 1`
do
cp "$i" "$dest/prefix-$i"
done
--------------

Dans le cas où tu ne peux pas sélectionner les fichiers d'après un
critère "informatisable", tu peux faire une liste comme ceci :
ls -1 >~/list.txt

ensuite tu édite le ficher et tu effaces les lignes en trop.

Ensuite dans le script :
for i in `cat ~/list.txt`




Bon, je n'arrive quand même pas à transformer en exécutable
ce petit test-démo



sudo chmod +x /le/script

Quel éditeur de texte tu utilises au fait ?



BBE (en utf-8)

L'aide Apple semble dire que c'est possible avec chmod
mais je n'ai peut-être pas compris ni comment faire ni ce qu'était un
"exécutable" ?



Il y a un "piège" dans l'interface graphique Apple :



Ooops! je voulais dire : Aide 'Terminal' d'Apple

En GUI tu peux juste régler les permissions de lecture et d'écriture
alors qu'il y en a 3 en réalité, read, write et execute.



j'avais tenté
chmod 4000 fichier


--
sm
Avatar
blanc
SAM wrote:

Va quand même falloir que je trouve un site m'expliquant la syntaxe



man cp
man bash
--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
blanc
Michel Nicolas Alex wrote:

> Bon, je n'arrive quand même pas à transformer en exécutable
> ce petit test-démo

sudo chmod +x /le/script



Pourquoi donc utiliser un sudo ici ?
C'est un script que tu as créé. Donc il t'appartient. Et par suite tu
peux modifier ses droits sans probleme, pas besoin d'être
superutilisateur.

chmod u+x /le/script

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
SAM
Le 9/28/08 9:14 AM, JiPaul a écrit :
SAM wrote:

Va quand même falloir que je trouve un site m'expliquant la syntaxe



man cp
man bash




J'ai dit "expliquant" (à moi qui suis pas doué)

pas baragouiner du charabia en pas français :-(

et puis ... où elle est la syntaxe là ?
ex:
for truc in file:/dossier/fichier if 'mot'== truc do ... etc etc ...

M'enfin wikipedia peut déjà un peu me guider.

Merci de ton intervention

--
sm
1 2 3