5

我需要编写一个脚本,从目录中读取所有文件名,然后根据文件名,例如,如果它包含 R1 或 R2,它将连接所有包含的文件名,例如名称中的 R1。

谁能给我一些提示如何做到这一点?

我唯一能做的是:

#!/bin/bash

FILES="path to the files"

for f in $FILES
do
  cat $f
done

这只告诉我变量 FILE 是一个目录而不是它拥有的文件。

4

2 回答 2

11

要进行解决问题的最小更改:

dir="path to the files"
for f in "$dir"/*; do
  cat "$f"
done

要完成您所描述的理想最终目标:

shopt -s nullglob
dir="path to the files"
substrings=( R1 R2 )
for substring in "${substrings[@]}"; do
  cat /dev/null "$dir"/*"$substring"* >"${substring}.out"
done

请注意,cat可以在一次调用中获取多个文件——事实上,如果你不这样做,你通常根本不需要使用 cat。

于 2012-06-04T12:20:02.160 回答
0

简单的破解:

ls -al R1 | awk '{print $9}' >输出文件名R1

ls -al R2 | awk '{print $9}' >输出文件名R2

于 2014-09-03T00:02:26.883 回答