从Bash中的目录读取文件名
我需要编写一个脚本,读取目录中的所有文件名,然后根据文件名,例如,如果它包含R1或R2,它将连接名称中包含R1的所有文件名 谁能告诉我怎么做 我唯一能做的就是:从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
#!/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
将只选择第一部分。还有其他的注意事项。