2012-04-08 10 views
1

ich einen Code zur Ausgabe von Daten in eine txt-Datei haben, aber ich möchte die ./ aus dem Ausgabenamen für jede DateiEntfernen ./ vom Ausgang

Code entfernen, ist wie folgt

#!/bin/bash 

# fill with more extensions or have it as a cmd line arg 
TYPES=(mov mp4 avi mp3 wma) 

DIR=$1 

# Create a regex of the extensions for the find command 
echo "Available Media Files in Directory" 

TYPES_RE="\\("${TYPES[1]} 
for t in "${TYPES[@]:1:${#TYPES[*]}}"; do 
    TYPES_RE="${TYPES_RE}\\|${t}" 
done 
TYPES_RE="${TYPES_RE}\\)" 

# Set the field seperator to newline instead of space 
SAVEIFS=$IFS 
IFS=$(echo -en "\n\b") 

# Generate output from path and size using: `stat -c "%s" filepath` 
OUTPUT="" 

for f in `find ${DIR} -type f -regex ".*\.${TYPES_RE}"`; do 

OUTPUT=`echo ${f}`";"$OUTPUT 

done 

# Reset IFS 
IFS=$SAVEIFS 

# Reverse numeric sort the output and replace ; with \n for printing 
echo $OUTPUT | tr ';' '\n' | sed 's/.*/"&"/' | sort -nr >playlist.txt 

das Ergebnis ist:

"./You Da One.mp3" 
"./Wiz Khalifa Roll Up.mp4" 
"./Vybz Kartel neva get a gal.mp3" 
"./Tyga Rack City.mp4" 
"./Tyga Lap Dance.mp4" 
"./Travis Porter Make It Rain.mp4" 
"./Travis Porter ft. Tyga Ayy Ladies.mp4" 
"./Snoop Dogg feat. Wiz Khalifa Bruno Mars Young Wild & Free.mp4" 
"./Shot Caller.mp3" 
"./Chris Brown - Your Body.mp4" 
"./Chris Brown Turn Up The Music.mp4" 

Notwendigkeit, die ./ aus jeder Datei entfernen

Dank

+0

Versucht, es durch '| zu leiten geschnitten -d './' -f 1'? –

+0

'./your_script | sed -e 's /^"\.\/\"/' ' – jweyrich

Antwort

3

Sie Basisnamen Befehl verwenden können das Verzeichnis Dateinamen abzustreifen, in Ihrem Skript wahrscheinlich eine gute Art und Weise zu verwenden, es in dem Suchbefehl ist, dh

find ${DIR} -type f -regex ".*\.${TYPES_RE}" -exec basename '{}' \; 
+0

+1, noch besser (eleganter) –

+0

Kannst du mir bitte erklären, was du meinst? Deine Antwort ist sehr vage. Die Antworten zu Stackoverflow sollten im Allgemeinen Details zur Lösung, einen Verweis und ein Beispiel enthalten. – jmort253

0

Änderung

echo $OUTPUT | tr ';' '\n' | sed 's/.*/"&"/' | sort -nr >playlist.txt 

zu

echo $OUTPUT | tr ';' '\n' | sed 's/^\.\///gi' | sed 's/.*/"&"/' | sort -nr >playlist.txt