Bekijk Volledige Versie : GEZOCHT: Bash Scripter
Ik ben op zoek naar iemand die mij een klein bash scriptje kan schrijven. De werking hiervan moet vrij rechttoe,rechtaan blijven. De werking moet zijn:
1. Haal alle bestanden in een map op de harde schijf op
2. Hussel ze in random volgorde
3. Schrijf alle bestanden met de absolute pathname weg naar een bestand
Bestandsnaam input en output moeten als variabele in te stellen zijn bovenin het script. Er zijn geen scriptingtalen zoals PHP en Perl aanwezig op het systeem.
Wat moet dat kosten en wanneer kun je dat opleveren?
Groeten,
Tim
dennis0162
26/08/10, 20:05
Ik heb dit even in elkaar gezet voor je.
#!/bin/sh
DIR="/root" # Directory welke uitgelezen moet worden voorbeeld: /root zonder / op het eind
DUMP="dump.txt" # Bestand waar hij alles moet dumpen voorbeeld: /root/dump.txt
# Start loop
for i in "$DIR"/*.*
do
echo ${i%%} >> $DUMP
done
# RANDOM
cat $DUMP | awk 'BEGIN{srand();}{print rand()"\t"$0}' | sort -k1 -n | cut -f2- > $DUMP.tmp
# Verwijder TMP file
rm -rf $DUMP
mv $DUMP.tmp $DUMP
Als we dan toch aan het script battelen zijn, mijn bijdrage:
#!/bin/bash
DIRECTORY="/root"
OUT_FILENAME="/root/dump.txt"
`ls -d -1 $DIRECTORY/*.* > /tmp/array.txt`
`shuf /tmp/array.txt -o $OUT_FILENAME`
rm -f /tmp/array.txt
:p
@ Dennis:
1. Spreek me even aan op MSN
2. Jou script neemt ook directories mee naar dump.txt?
dennis0162
26/08/10, 20:43
Hij neemt alleen bestanden mee.
Het scriptje van jouw is een stuk korter en makkelijker.
MediaServe
26/08/10, 21:11
Gewoon één regel moet toch voldoende zijn? :p
find /folder/ -maxdepth 1 -type f | sort -R > /output.txt
Bestandsnaam input en output moeten als variabele in te stellen zijn bovenin het script.
Oke, dan zoiets:
#!/bin/bash
RANDOMFOLDER=/folder/
OUTPUTFILE=/output.txt
find $RANDOMFOLDER -maxdepth 1 -type f | sort -R > $OUTPUTFILE
Gewoon één regel moet toch voldoende zijn? :p
find /folder/ -maxdepth 1 -type f | sort -R > /output.txt
Oke, dan zoiets:
#!/bin/bash
RANDOMFOLDER=/folder/
OUTPUTFILE=/output.txt
find $RANDOMFOLDER -maxdepth 1 -type f | sort -R > $OUTPUTFILE
man sort
-R, --random-sort
sort by random hash of keys
Jij wint :W:
lol. Allen bedankt! Als het in 1 regel kan dan hoef ik ook geen variabelen bovenaan te hebben, dus dan wint het 1 (of 2) regel grote scriptje van Mediaserve! :D
Als ik wil zoeken in ALLE submappen, maakt niet uit hoe diep het gaat en met extensie .jpg maar ook .JPG hoe krijg ik dat dan nog voor mekaar met deze van Mediaserve:
find MAP_X -type f -name *.jpg | sort -R > FILES.LST
voor de diepte denk ik dat je maxdepth op 10 moet zetten ofzo
Ik bedoel: hoe zoek ik op .jpg waarbij de CaSe (hoofdlettergebruik) niet bekeken wordt?
Ik bedoel: hoe zoek ik op .jpg waarbij de CaSe (hoofdlettergebruik) niet bekeken wordt?Zo 1-2-3 gezocht is '-iname' case-sensetive en '-name' niet...?
http://www.devdaily.com/blog/post/linux-unix/case-insensitive-file-searching-unix-linux-mac-osx
MediaServe
27/08/10, 11:34
find /folder/ -maxdepth 1 -type f | grep -i -e ".jp[e]*g$" | sort -R > /output.txt