Bonjour, j'ai besoin de créer un dossier basé sur un nom de fichier. Dans ce dossier, créez-en un autre, puis déplacez le fichier dans ce deuxième dossier.
exemple:
cat.jpg
create folder cat
create folder picture
move cat.jpg to picture
tous mes fichiers .jpg sont en
/ root/Desktop/My_pictures
il devrait donc ressembler à ceci:
exemple d'image "cat.jpg"
/root/Desktop/My_pictures/cat/pictures/cat.jpg
Désolé si je ne suis pas précis, mais l'anglais n'est pas ma langue maternelle.
Cordialement et Merci
Vous pouvez également supprimer le ls *.jpg
et simplement utiliser Shell globbing :
#!/bin/bash
for full_filename in *jpg; do
extension="${full_filename##*.}"
filename="${full_filename%.*}"
mkdir -p "$filename/picture"
mv "$full_filename" "$filename/picture"
done
Veuillez créer et exécuter ce script dans /root/Desktop/My_pictures
.
Une approche similaire:
#!/usr/bin/env bash
## iterate through each file whose name ends in 'jpg'
## saving it as $file. ~ is your $HOME directory
for file in ~/Desktop/My_pictures/*jpg
do
## basename will remove the path (~/Desktop/My_pictures) and also
## remove the extension you give as a second argument
name="$(basename "$file" .jpg)"
## create the directory, the -p means it will create
## the parent directories if needed and it won't complain
## if the directory exists.
mkdir -p ~/Desktop/My_pictures/"$name"
## copy the file to the new directory
mv "$file" "~/Desktop/My_pictures/$name"
done
Enregistrez le script ci-dessus sous le nom, par exemple, ~/movefiles.sh
, rendez-le exécutable avec chmod +x movefiles.sh
et exécutez-le:
~/movefiles.sh