The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Per loop utilizzando trovare il nome del file con spazi mronsman UNIX for Dummies Domande & Risposte 3 09-12-2008 08:23 AM
Variabile problema di loop con if ejdv Shell scripting e di programmazione 6 06-17-2008 08:52 AM
Per loop dichiarazione - di cattura errore lumdev Shell scripting e di programmazione 4 09-20-2007 07:50 AM
dichiarazione, se in un ciclo while Bobo UNIX for Dummies Domande & Risposte 2 11-07-2006 12:38 PM
se per la dichiarazione in loop di una stringa Sniper Pixie UNIX for Dummies Domande & Risposte 7 03-02-2006 07:28 AM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 07-03-2009
cbo0485 cbo0485 is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 87
Per loop dichiarazione trovare il nome del file di manipolazione

Codice:
for i in `find . -name "*.BEFORE_DISASTER_RECOVERY"`;do dir_name=`dirname $i`;file_name=`basename $i`;cd $dir_name;mv $file_name (STUCK HERE) ;pwd;cd $BASE_DIR;done
Okay, ho avuto la possibilità di arrivare a questo punto. Come potete vedere, ho un piccolo anello per ricerche che per ogni file con la stringa BEFORE_DISASTER_RECOVERY nel nome del file, è poi imposta due variabili dir_name e nome_file, cd per la dir_name directory, e quindi questo è dove ho bloccato. Ho bisogno di mv nome_file $ a $ nomefile meno ". BEFORE_DISASTER_RECOVERY.

Sono sicuro che è qualcosa di semplice, ma questo è da dove sto attualmente bloccato.
  #2 (permalink)  
Old 07-03-2009
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
Moderatore (tutor)
  
 

Iscriviti Data: giugno 2008
Ubicazione: INDIA
Interventi: 1.390
che cosa si intende per $ filename "meno"?
è mv prova.txt prova .txt?
  #3 (permalink)  
Old 07-03-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmatore, autore
  
 

Iscriviti Data: marzo 2007
Luogo: Toronto, Canada
Interventi: 2.361
Citazione:
Originalmente inviato da cbo0485 View Post

(Codice riformattate per leggibilità)
Citazione:
Codice:
for i in `find . -name "*.BEFORE_DISASTER_RECOVERY"`

Che se del caso i nomi dei file non contengono spazi. Pipe l'output di trovare in un loop:

Codice:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  : do whatever
done
(E lo script sarà più leggibile se si utilizza un nome di variabile significativa per il ciclo.)
Citazione:
Codice:
do
  dir_name=`dirname $i`
  file_name=`basename $i`

Non è necessario sia per comando esterno, o basename dirname. La shell Unix può farlo internamente:

Codice:
dir_name=${file%/*}
file_name=${file##*/}
Citazione:
Codice:
  cd $dir_name
  mv $file_name # (STUCK HERE)

Entrambi i cd e se non andrà a buon fine mv $ dir_name contiene spazi. Citazione variabile di riferimento:

Codice:
  cd "$dir_name"
  mv "$file_name"
Citazione:
Codice:
  pwd
  cd $BASE_DIR
done
Okay, ho avuto la possibilità di arrivare a questo punto. Come potete vedere, ho un piccolo anello per ricerche che per ogni file con la stringa BEFORE_DISASTER_RECOVERY nel nome del file, è poi imposta due variabili dir_name e nome_file, cd per la dir_name directory, e quindi questo è dove ho bloccato. Ho bisogno di mv nome_file $ a $ nomefile meno ". BEFORE_DISASTER_RECOVERY.

Sono sicuro che è qualcosa di semplice, ma questo è da dove sto attualmente bloccato.

Tutto ciò di cui hai bisogno è:

Codice:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  mv "$file" "$file%.BEFORE_DISASTER_RECOVERY}"
done
  #4 (permalink)  
Old 07-03-2009
cbo0485 cbo0485 is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 87
Citazione:
Originalmente inviato da cfajohnson View Post

(Codice riformattate per leggibilità)

Che se del caso i nomi dei file non contengono spazi. Pipe l'output di trovare in un loop:

Codice:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  : do whatever
done
(E lo script sarà più leggibile se si utilizza un nome di variabile significativa per il ciclo.)

Non è necessario sia per comando esterno, o basename dirname. La shell Unix può farlo internamente:

Codice:
dir_name=${file%/*}
file_name=${file##*/}

Entrambi i cd e se non andrà a buon fine mv $ dir_name contiene spazi. Citazione variabile di riferimento:

Codice:
  cd "$dir_name"
  mv "$file_name"

Tutto ciò di cui hai bisogno è:

Codice:
find . -name "*.BEFORE_DISASTER_RECOVERY" |
while read file
do
  mv "$file" "$file%.BEFORE_DISASTER_RECOVERY}"
done
Io sicuramente ho conosciuto era nuovo a linux di scripting, ma non ho realizzato che era cattivo, lol.

Anyways, credo che lei aveva frainteso o un errore di battitura, non voglio aggiungere che a mio file, voglio rimuoverlo.

Ho chiamato file:

startServerABC.BEFORE_DISASTER_RECOVERY
o
startServer.sh.BEFORE_DISASTER_RECOVERY

Ho bisogno di rimuovere il file. BEFORE_DISASTER_RECOVERY da il nome del file, per essere lasciato con

startServerABC o startServer.sh
  #5 (permalink)  
Old 07-03-2009
vidyadhar85's Avatar
vidyadhar85 vidyadhar85 is offline Forum Staff  
Moderatore (tutor)
  
 

Iscriviti Data: giugno 2008
Ubicazione: INDIA
Interventi: 1.390
quindi utilizzare il solo basename
Codice:
basename "$filename" .BEFORE_DISASTER_RECOVERY
home> basename startServer.sh.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServer.sh
home>  basename startServerABC.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServerABC
Penso che hai avuto il mio punto ...
  #6 (permalink)  
Old 07-06-2009
cbo0485 cbo0485 is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 87
Citazione:
Originalmente inviato da vidyadhar85 View Post
quindi utilizzare il solo basename
Codice:
basename "$filename" .BEFORE_DISASTER_RECOVERY
home> basename startServer.sh.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServer.sh
home>  basename startServerABC.BEFORE_DISASTER_RECOVERY .BEFORE_DISASTER_RECOVERY
startServerABC
Penso che hai avuto il mio punto ...
Questo funziona perfettamente all'interno del mio anello.

Grazie
Codice:
for i in `find . -name "*.BEFORE_DISASTER_RECOVERY"`;do dir_name=`dirname $i`;file_name=`basename $i`;cd $dir_name;cp $file_name `basename $file_name .BEFORE_DISASTER_RECOVERY`;pwd;cd $BASE_DIR;done
Reply

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 12:02 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0