GNU/Linux >> Linux Esercitazione >  >> Linux

creazione della directory dal nome file e spostamento bash

Non sono consentiti spazi bianchi attorno a = in un compito.

dir="${file%%.*}"

Al contrario, gli spazi bianchi sono obbligatori in un test.

if [ -e $dir ]; then
    ^       ^

Per quanto riguarda i miglioramenti stilistici, non fa male fare un mkdir -p non necessario , così puoi sbarazzarti del if dichiarazione.

Le virgolette non sono richieste in un compito, quindi puoi rimuoverle dal dir= linea. Le citazioni sono comunque una buona idea ovunque, quindi non eliminare le altre virgolette.

Potrebbe essere utile aggiungere un ulteriore .* al ciclo for. In questo modo, se esegui lo script più di una volta, non tenterà di spostare le sottodirectory appena create. E un bel trucco (sebbene non necessariamente un miglioramento) è accorciare BR*.* W0*.* a {BR,W0}*.* .

for file in {BR,W0}*.*; do
    dir=${file%%.*}
    mkdir -p "$dir"
    mv "$file" "$dir"
done

Linux
  1. Estrarre nomi dal nome file in Bash?

  2. Creazione e rimozione di file e directory in Linux

  3. Comando di spostamento della directory di Linux

  4. Come spostare (e sovrascrivere) tutti i file da una directory all'altra?

  5. Creazione di un albero di directory completo in una sola volta

Perché il mio collegamento simbolico crea un file e non una cartella?

Rimuovi tutti i caratteri speciali e le maiuscole dalla stringa in bash

Creazione di classi e oggetti utilizzando lo scripting bash

Linux Bash:sposta più file diversi nella stessa directory

Impedisci alla versione 10.2 di creare la directory Wolfram Mathematica su Linux

Come spostare tutti i file dalla directory corrente alla directory superiore?