linux - Bash如何对两个目录中的文件执行命令

标签 linux bash

我知道这个用于对一个目录中的所有文件执行操作的 bash 代码:

for files in dir/*.ext; do 
cmd option "${files%.*}.ext" out "${files%.*}.newext"; done

但现在我必须对一个目录中的所有文件和另一个目录中具有相同文件名但不同扩展名的所有文件执行操作。例如

directory 1 -> file1.txt, file2.txt, file3.txt
directory 2 -> file1.csv, file2.csv, file3.csv

cmd file1.txt file1.csv > file1.newext
cmd file2.txt file2.csv > file2.newext

我不能比较两个文件,但我必须执行的脚本需要两个文件来生成另一个文件(特别是我必须执行 bwa samsa path_to_ref/ref file1.txt file1.csv > file1.newext)

你能帮帮我吗?

感谢您的回答!

最佳答案

在 bash 中使用变量操作:

$ for f in test/* ; do t="${f##*/}";  echo "$f" test2/"${t%.txt}".csv ; done
test/file1.txt test2/file1.csv
test/file2.txt test2/file2.csv
test/file3.txt test2/file3.csv

编辑:

实现@DavidC.Rankin 的保险建议:

$ touch test/futile
for f in test/*
do 
  t="${f##*/}"
  t="test2/${t%.txt}".csv
  if [ -e "$t" ]
  then 
    echo "$f" "$t"
  fi
done
test/file1.txt test2/file1.csv
test/file2.txt test2/file2.csv
test/file3.txt test2/file3.csv

关于linux - Bash如何对两个目录中的文件执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47991011/

相关文章:

arrays - 如何在 Bash 中为动态关联数组赋值?

c - C中printk的atomic_long_t的打印格式是什么

python - 采购 Anaconda 激活脚本与将 Anaconda bin 目录添加到 PATH

linux - csh脚本中的 undefined variable 错误

php - ZendDebugger 无法在 Mint 12 中打开 libssl.so.0.9.8

bash - perl shasum 与 bash shasum

c++ - Linux 键盘扫描码问题 : For example, UP ARROW 给出 ^[[A

linux - Buildroot 不以 root 身份运行,也不想以 root 身份运行

linux - Cron 作业无法启动进程

c - 如何获取 xv6 中内核启动后的系统调用次数?