[csh] dir list met spaties in bestandsnamen

Pagina: 1
Acties:

  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 10-02 06:19
Ik probeer in een script een variabele/array te krijgen met daarin een directory inhoud. Als ik het nu simpel doe met @ array[] = `ls` komen de verschillende delen van de bestandsnamen (met spaties) in aparte delen van de array. Wie heeft er voor een leuke manier om dit te voorkomen (buiten geen spaties gebruiken... ;))


ps: Een link naar een goede csh manual (met voorbeelden) is ook welkom :)

[ Voor 11% gewijzigd door surfdude op 26-02-2004 12:33 ]

Het kan altijd mooier en beter...


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
shell scripten heb ik ooit al eens gedaan in mijn opleiding, maar verder heb ik er geen ervaringen mee...

Maar kun je niets doen met fields en het cut-commando. Eerst je dirlist als een field beschouwen waarvan de separators een TAB zijn en dan het i-de field eruithalen door middel van het cut-commando?

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:46
OS specifieke scripts horen niet thuis in P&W, maar in het juiste OS forum

P&W -> NOS

https://fgheysels.github.io/


  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 10-02 06:19
ok thnx :)

Het kan altijd mooier en beter...


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Waarom doe je niet gewoon iets als volgt?
code:
1
2
3
4
5
c=0
foreach i (*)
  array[$c]=$i
  c=`expr $c + 1`
end
:)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 10-02 06:19
Spider.007 schreef op 26 februari 2004 @ 15:36:
Waarom doe je niet gewoon iets als volgt?
code:
1
2
3
4
5
c=0
foreach i (*)
  array[$c]=$i
  c=`expr $c + 1`
end
:)
Ik had na een poosje puzzelen net zoiets bedacht en toen las ik jouw bericht, maar toch bedankt voor de bevestiging :)

Het kan altijd mooier en beter...


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

surfude schreef op 26 februari 2004 @ 15:49:
[...]


Ik had na een poosje puzzelen net zoiets bedacht en toen las ik jouw bericht, maar toch bedankt voor de bevestiging :)
wow.. dus het werkt nog ook :P

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 10-02 06:19
Ik doe toch iets anders en wel het volgende:

foreach element (*)
if (-d "$element") then
set dirlist = ($dirlist "$element")

Het punt is dat je bij csh niet zomaar een element aan de array toe kan voegen, dus jammergenoeg werkt jouw oplossing niet Spider.007 :(
Daarom her-definieer ik het nu steeds weer, maar dan zit ik met hetzelfde probleem, weer de spaties als scheiding gebruikt worden...

BTW. Dit hierboven werkt dus ook niet als $dirlist nog niet bestaat...

Oplossing? (geen csh gebruiken... ;))

[ Voor 3% gewijzigd door surfdude op 26-02-2004 17:03 ]

Het kan altijd mooier en beter...


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Misschien kun je nog eens uitleggen wat je uiteindelijke doel is :) Waarom wil je een array hebben met alle directories in de huidige directory erin? Wat ga je daarmee doen? Wellicht is een beter oplossing op een andere manier wel te doen :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • surfdude
  • Registratie: Maart 2000
  • Laatst online: 10-02 06:19
Spider.007 schreef op 26 februari 2004 @ 18:36:
Misschien kun je nog eens uitleggen wat je uiteindelijke doel is :) Waarom wil je een array hebben met alle directories in de huidige directory erin? Wat ga je daarmee doen? Wellicht is een beter oplossing op een andere manier wel te doen :)
We zijn hier met alle data naar een nieuwe server verhuisd en nu is gebleken dat het kopieren voor sommige willekeurige files en directories niet goed is gegaan. Nu wil ik dus checken of de files en directories gekopieerd zijn en of de files de juiste grootte hebben.
Momenteel heb ik een scriptje met het 'diff' commando erin en de uitkomst zet ik in een bestand en dat filter ik weer op de info die ik wil hebben (met 'head' en 'tail' kan ik hele regels checken. Nu zag ik net alleen dat diff zelf threads aanmaakt en dat een deel van de output op mijn scherm wordt gezet ipv. in mijn bestand...
Het doet dus nogsteeds niet precies wat ik wil en is behoorlijk I/0 intensief en daardoor ook traag... :(

Idee'tje? :)

Het kan altijd mooier en beter...


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

surfude schreef op 27 februari 2004 @ 15:58:
[...]


We zijn hier met alle data naar een nieuwe server verhuisd en nu is gebleken dat het kopieren voor sommige willekeurige files en directories niet goed is gegaan. Nu wil ik dus checken of de files en directories gekopieerd zijn en of de files de juiste grootte hebben.
Momenteel heb ik een scriptje met het 'diff' commando erin en de uitkomst zet ik in een bestand en dat filter ik weer op de info die ik wil hebben (met 'head' en 'tail' kan ik hele regels checken. Nu zag ik net alleen dat diff zelf threads aanmaakt en dat een deel van de output op mijn scherm wordt gezet ipv. in mijn bestand...
Het doet dus nogsteeds niet precies wat ik wil en is behoorlijk I/0 intensief en daardoor ook traag... :(

Idee'tje? :)
Als het 1 map met submappen is kun je toch gewoon een ls -alR diff-en? Of heb je modificatie datums enzo niet 1-op-1 overgenomen? Je zou als alternatief (mocht het erop staan) ook een dry-run van rsync kunnen laten draaien; die doet dit voor jou. Als alternatief kun je ook nog een script schrijven dat md5 sums berekent voor bestanden; zoiets:
code:
1
find -type f -exec md5sum {}
en die daarna controleren met
code:
1
md5sum --check
:)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate

Pagina: 1