繁体   English   中英

递归查找文件并使用它们

[英]Find files recursively and use them

我正在寻找一个脚本,用于比较来自两个不同路径的相同文件。

  1. 脚本必须接受2个路径,即oldfiles和newfiles目录路径作为参数
  2. 从oldfiles中读取第一个子文件夹名称,然后在newfiles路径中搜索相同的子文件夹名称。 如果找到相同的子文件夹,则
  3. 检查两个文件名是否匹配(不是扩展名!),如果匹配,则
  4. 对这两个文件进行处理

请帮我! 到目前为止,他是我的剧本

# Process each file in directory_1, comparing it to directory_2
find $1/ -type f -name '*.txt' -print | while read src
do
    for filename in */*.txt; do
        echo $filename
        fn=$(basename "$filename")
        if [ -f "$filename" ]; then
            echo $filename
            newname=`echo $2/$fn|sed 's/\.txt$//g'`
            echo $newname
            #do something here with this two files
            echo "Done"
        fi
    done
done

您不需要for filename循环, find是打印文件名。

使用basename是错误的,因为它会丢失路径中的所有中间目录。 因此,请使用bash变量替换在路径中将$1替换$1 $2

find "$1" -type f -name '*.txt' -print | while read filename
do
    echo "$filename"
    newname=${filename/$1/$2} # Replace old directory prefix with new prefix
    newname=${newname%.txt} # Remove extension
    echo "$newname"
    if [ -f "$newname" ]
    then
        #do something here with this two files
    fi
    echo "Done"
done

暂无
暂无

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

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