我需要编写一个脚本,从目录中读取所有文件名,然后根据文件名,例如,如果它包含 R1 或 R2,它将连接所有包含的文件名,例如名称中的 R1。
谁能给我一些提示如何做到这一点?
我唯一能做的是:
#!/bin/bash
FILES="path to the files"
for f in $FILES
do
cat $f
done
这只告诉我变量 FILE 是一个目录而不是它拥有的文件。
我需要编写一个脚本,从目录中读取所有文件名,然后根据文件名,例如,如果它包含 R1 或 R2,它将连接所有包含的文件名,例如名称中的 R1。
谁能给我一些提示如何做到这一点?
我唯一能做的是:
#!/bin/bash
FILES="path to the files"
for f in $FILES
do
cat $f
done
这只告诉我变量 FILE 是一个目录而不是它拥有的文件。
要进行解决问题的最小更改:
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。
简单的破解:
ls -al R1 | awk '{print $9}' >输出文件名R1
ls -al R2 | awk '{print $9}' >输出文件名R2