繁体   English   中英

Bash-文件n为$ 1?

[英]Bash - file n of $1?

最近,我用bash做过一些事情,主要是关于音频文件(sox批处理脚本)的。 我尝试学习,正在阅读,阅读和搜索,但有时我不得不解决的“简单”问题只会导致我遇到大量的台词,网页,最终没有答案。 这是其中之一:

我需要处理给定输入文件夹( $1 )的文件$1 ,并将其参数之一与另一个给定输入文件夹( $2 )的文件1进行比较。 “文件1”,是指:如果您调用目录内容,将列出的第一个文件; 喜欢 :

for f in "$1"/*
do
  echo $f
done

我的目标是按对将文件夹$1的文件n与文件夹$2文件n进行比较,其中“ n”是文件在文件夹中的“位置”,无论它们是按名称列出还是其他形式都无关紧要,因为在运行脚本时,它们将以相同的方式在文件夹$1和文件夹$2列出。

Applescript让我以一种简单的方式寻址文件夹1的文件4; 在bash脚本中会复杂得多,还是我完全缺少基本的东西?

首先十分感谢

令人惊讶的是,这实际上有机会正常工作,因为POSIX保证文件名扩展的结果将根据当前语言环境(链接后面的2.13.3)进行排序,并且bash必须遵循它。 请注意,尽管不同的语言环境可能会产生不同的排序顺序。

由于该问题被标记为“ bash”,因此我将不关心POSIX一致性,并建议使用bash数组:

files=("$1"/*)
echo "${files[4]}"

这也可以与变量一起用作索引:

files=("$1"/*)
i=4
echo "${files[i]}"

但是,我看不到如何合理使用此构造,听起来好像您实际上是在寻找diff -r "$1" "$2"左右。

当文件名相等时(响应者对@Wintermute的回答提出了什么建议),您可以不使用数组来处理它:

ls $1 | while read fileWithPath; do
   file=${fileWithPath##*/}
   echo "My own soxdiff between $1/$file and $2/$file"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM