首先,服务器运行Solaris。我问题的上下文是Informatica PowerCenter。
我需要列出位于收件箱目录中的文件。基本上,结果应该是按文件类型列出一个文件列表。不同的文件类型由文件名来区分。我不想每次新文件类型开始存在时都更新脚本,所以我想到了一个带有regex、收件箱目录和文件列表的参数化shell脚本。
举个例子:
/Inbox/ABC.DEFGHI.PAC.AE.1236547.49566
/Inbox/ABC.DEFGHI.PAC.AE.9876543.21036
/Inbox/DEF.JKLMNO.PAC.AI.1236547.49566..。必须生成两个列表文件,其中包含所列文件的路径和文件名:
/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发布于 2016-10-25 20:56:09
假设所有输入文件都遵循您所指出的约定(在点上拆分时,第3列和第4列确定类型),这个脚本可能会做到这一点:
#! /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用法:
./script.sh Inbox Inbox/collections将从收件箱读取所有文件(而不是目录),并将集合文件写入收件箱/集合。集合中的文件名应按字母顺序排序。
https://stackoverflow.com/questions/39916041
复制相似问题