linux - 选择并循环遍历两个目录 linux 中的差异

标签 linux bash file sh

我有 bash 脚本,它循环遍历原始文件夹中的文件并将它们放入音频文件夹中。这很好用。

#!/bin/bash
PATH_IN=('/nas/data/customers/test2/raw/')
PATH_OUT=('/nas/data/customers/test2/audio/')

mkdir -p /nas/data/customers/test2/audio
IFS=$'\n'
find $PATH_IN -type f -name '*.wav' -exec basename {} \; | while read -r file; do
    sox -S ${PATH_IN}${file} -e signed-integer ${PATH_OUT}${file}
done

我的问题是,随着文件夹的增长,我不想在已经转换的文件上运行脚本,所以我想只循环尚未转换的文件。也就是说,文件只有原始格式,但没有音频格式。

我找到了函数

diff audio raw

我可以做到这一点,但我找不到将其合并到我的 bash 脚本中的好方法。在正确方向上的任何帮助或插入将不胜感激。

最佳答案

你可以这样做:

diff <(ls -1a $PATH_OUT) <(ls -1a $PATH_IN) | grep -E ">" | sed -E 's/> //'

第一部分将比较两个文件夹中的文件,第二部分将过滤掉以仅获取添加内容,第三部分将清除列表中的差异符号以仅获取名称。

关于linux - 选择并循环遍历两个目录 linux 中的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55648941/

相关文章:

c - 将文件字符串转换为字符指针

linux - shell脚本中变量的引用方式有什么不同吗?

python - 使用 pip3 : module "importlib._bootstrap" has no attribute "SourceFileLoader"

linux - Linux 中的恢复脚本第 2 部分

regex - 如何在Linux中仅用字母之间的下划线替换空格,忽略数字

java - 使用java分割文件

c - 如何用来自/dev/urandom 的 100 MB 数据填充文件?

linux - 如何在 Linux 中禁用内核模块签名

php - Mac/OSx - 更改在 bash 中调用的 PHP 版本

java - 使用 Java 为大文件生成 MD5 非常慢