web-dev-qa-db-fra.com

Déplacer les fichiers dans un dossier en fonction des parties du nom de fichier

J'essaie de créer un script bash pour déplacer des fichiers anime téléchargés vers des dossiers sans le numéro d'épisode.

Nom de fichier/Liste des fichiers Par exemple:

[SubsHorrible] name of show - 00 [1080p].mkv
[SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
[SubsHorrible] name of show - 000 [1080p].mkv

Déplacer vers un nouveau dossier basé sur "nom de l'émission"

[SubsHorrible] name of show
   [SubsHorrible] name of show - 00 [1080p].mkv
   [SubsHorrible] name of show - 01 [1080p].mkv
[SubsHorrible] name of show - name2 of show
   [SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
   [SubsHorrible] name of show - name2 of show - 01 [1080p].mkv
[SubsHorrible] name of show
   [SubsHorrible] name of show - 100 [1080p].mkv
   [SubsHorrible] name of show - 101 [1080p].mkv

Toute aide serait appréciée!

1
QWEbie

Puisque vous n'avez fourni aucun script pour vous aider, utilisez cette ligne pour créer les noms de dossier à partir de la liste de fichiers:

  1. Créer une variable (ou lire à partir d'un fichier de liste de noms de fichiers): filename="[SubsHorrible] name of show - 00 [1080p].mkv"
  2. Ensuite, obtenez la pièce nécessaire: echo ${filename" "-*}

  3. Résultat: [SubsHorrible] name of show, pour créer le dossier, faites echo ${filename%%" "-*} | xargs -d '\n' mkdir

Explication: ${filename%" "-*}: à l'arrière du nom du fichier, supprimez tout jusqu'au point " "-, puis renvoyez tout le reste.

Pour l'échantillon donné:

[SubsHorrible] name of show - 00 [1080p].mkv
[SubsHorrible] name of show - name2 of show - 00 [1080p].mkv
[SubsHorrible] name of show - 000 [1080p].mkv

Résultats:

[SubsHorrible] name of show
[SubsHorrible] name of show - name2 of show
[SubsHorrible] name of show

Utilisez ce script simple pour créer les dossiers:

#!/usr/bin/env bash

while IFS= read -r var
do
    mkdir "${var%" "-*}"
done < "$1"

Usage:

./createfolder.sh list

En coopérer dans votre script plus grand.

  • Voir ceci pour plus d'aide:

https://www.cyberciti.biz/tips/bash-Shell-parameter- substitution_.html

0
George Udosen