2016-10-07 1 views
1

Zunächst führt der Server Solaris. Der Kontext meiner Frage ist Informatica PowerCenter.Solaris: Regex, wie Sie Dateien mit bestimmten Dateinamen auswählen

Ich muss Dateien im Posteingang Verzeichnis auflisten. Grundsätzlich sollte das Ergebnis eine Dateiliste nach Dateityp sein. Die verschiedenen Dateitypen unterscheiden sich durch den Dateinamen. Ich möchte nicht, das Skript ein neuer Dateityp jedes Mal aktualisieren, beginnt zu existieren so mit dem regulären Ausdruck eines parametrisierte Shell-Skript zu denken, ich war das Inbox-Verzeichnis und die Dateiliste

Ein Beispiel:

/Inbox/ABC.DEFGHI.PAC.AE.1236547.49566 
/Inbox/ABC.DEFGHI.PAC.AE.9876543.21036 
/Inbox/DEF.JKLMNO.PAC.AI.1236547.49566 

... hat in 2 Liste Dateien enthält den Pfad und Dateinamen der aufgeführten Dateien führen:

/Inbox/PAC.AE.FILELIST 
-->/Inbox/ABC.DEFGHI.PAC.AE.1236547.49566 
-->/Inbox/ABC.DEFGHI.PAC.AE.9876543.21036 
/Inbox/PAC.AI.FILELIST 
-->/Inbox/DEF.JKLMNO.PAC.AI.1236547.49566 

Antwort

0

Unter der Annahme, alle Eingabedateien folgen der Konvention Sie (zeigt an, wenn auf Punkte aufzuteilen, die 3. und 4. Spalte Bestimmen Sie den Typ), könnte dieses Skript den Trick tun:

#! /usr/bin/env bash 

# First parameter or current directory 
INPUTDIR=${1:-.} 
# Second parameter (or first input directory if not given) 
OUTPUTDIR=${2:-$INPUTDIR} 
# Filter out directories 
INPUTFILES=$(ls -p $INPUTDIR | grep -v "/") 

echo "Input: $INPUTDIR, output: $OUTPUTDIR" 

for FILE in $INPUTFILES; do 
    FILETYPE=$(echo $FILE | cut -d. -f3,4) 
    COLLECTION_FILENAME="$OUTPUTDIR/${FILETYPE:-UNKNOWN}.FILELIST" 
    echo "$FILE" >> $COLLECTION_FILENAME 
done 

Verbrauch:

./script.sh Inbox Inbox/collections 

alle Dateien lesen (nicht Verzeichnisse) aus dem Posteingang, und schreiben Sie die Sammlung von Dateien zu Inbox/Sammlungen. Dateinamen innerhalb von Sammlungen sollten alphabetisch sortiert sein.

Verwandte Themen