首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solaris: Regex如何选择具有特定文件名的文件

Solaris: Regex如何选择具有特定文件名的文件
EN

Stack Overflow用户
提问于 2016-10-07 11:24:03
回答 1查看 72关注 0票数 1

首先,服务器运行Solaris。我问题的上下文是Informatica PowerCenter。

我需要列出位于收件箱目录中的文件。基本上,结果应该是按文件类型列出一个文件列表。不同的文件类型由文件名来区分。我不想每次新文件类型开始存在时都更新脚本,所以我想到了一个带有regex、收件箱目录和文件列表的参数化shell脚本。

举个例子:

代码语言:javascript
复制
/Inbox/ABC.DEFGHI.PAC.AE.1236547.49566
/Inbox/ABC.DEFGHI.PAC.AE.9876543.21036
/Inbox/DEF.JKLMNO.PAC.AI.1236547.49566

..。必须生成两个列表文件,其中包含所列文件的路径和文件名:

代码语言:javascript
复制
/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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-25 20:56:09

假设所有输入文件都遵循您所指出的约定(在点上拆分时,第3列和第4列确定类型),这个脚本可能会做到这一点:

代码语言:javascript
复制
#! /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

用法:

代码语言:javascript
复制
./script.sh Inbox Inbox/collections

将从收件箱读取所有文件(而不是目录),并将集合文件写入收件箱/集合。集合中的文件名应按字母顺序排序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39916041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档