从Bash中的目录读取文件名

从Bash中的目录读取文件名,bash,Bash,我需要编写一个脚本,读取目录中的所有文件名,然后根据文件名,例如,如果它包含R1或R2,它将连接名称中包含R1的所有文件名 谁能告诉我怎么做 我唯一能做的就是: #!/bin/bash FILES="path to the files" for f in $FILES do cat $f done 这只表明变量文件是一个目录,而不是它所拥有的文件。要进行最小的更改以解决问题,请执行以下操作: dir="path to the files" for f in "$dir"/*; do

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

谁能告诉我怎么做

我唯一能做的就是:

#!/bin/bash

FILES="path to the files"

for f in $FILES
do
  cat $f
done

这只表明变量文件是一个目录,而不是它所拥有的文件。

要进行最小的更改以解决问题,请执行以下操作:

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}'>输出文件名1

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


如果文件名中包含空格,
print$9
将只选择第一部分。还有其他的注意事项。