递归查找文件并使用它们

时间:2014-01-02 18:43:18

标签: bash shell sh

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

  1. 脚本必须接受2条路径,即oldfiles和newfiles目录路径作为参数
  2. 从oldfiles读取第一个子文件夹名称,并在newfiles路径中搜索相同的子文件夹名称。如果找到相同的子文件夹,则
  3. 检查两个文件名是否匹配(不是扩展名!),如果是,则
  4. 用这两个文件做点什么
  5. 请帮帮我! 到目前为止,他是我的剧本

    # 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
    

1 个答案:

答案 0 :(得分:1)

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

使用basename是错误的,因为它丢失了路径中的所有中间目录。因此,请使用bash变量替换将$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