我有两个目录,从其中提取两个文件中的特定列并将它们保存到一个新文件中:
shopt -s nullglob
a_files=(/path/to/a_files/*.csv)
b_files=(/path/to/b_files/*.csv)
out_dir=(/path/to/output/folder)
for ((i=0; i<"${#a_files[@]}"; i++)); do
paste -d, <(cut "${a_files[i]}" -d, -f1-6) \
<(cut "${b_files[i]}" -d, -f7-) > c_file"$i".csv
done代码可以工作,但我希望输出文件保存在输出目录out_dir中,并具有a_files的文件名。
我尝试过使用>"out_dir/$a_files",但是我得到了错误“没有这样的文件或目录”。
如何将输出文件重定向到目录?
我正在使用。
更新:a_files和b_files的行数相同,但它们存在于不同的文件夹中。
发布于 2018-09-13 19:53:54
a_files=(/path/to/files/*.csv)
b_files=(/path/to/files/*.csv)
out_dir="/path/to/output/folder"
# create the output directory
mkdir -p "$out_dir"
for ((i=0; i<"${#a_files[@]}"; i++)); do
# move the output to "$out_dir" with the filename the same as in ${a_files[i]}
paste -d, <(cut "${a_files[i]}" -d, -f1-6) <(cut "${b_files[i]}" -d, -f7-) \
> "$out_dir"/"$(basename "${a_files[i]}")"
done但这对我来说就像是一份工作,但那只是我自己:
a_path="/path/to/files/*.csv"
b_path="/path/to/files/*.csv"
out_dir="/path/to/output/folder"
join -z <(printf "%s\0" $a_path) <(printf "%s\0" $b_path) | xargs -0 -n2 sh -c 'paste -d, <(cut "$1" -d, -f1-6) <(cut "$2" -d, -f7-) > '"$out_dir"'/"$(basename "$1")"' --https://stackoverflow.com/questions/52318630
复制相似问题