2016-10-31 49 views
0

我有两个文件夹:src/build/(按文件循环文件并执行某些操作)并行程序

src/assets/,我在build/有一些同名的文件。

我想在src/assets/并行程序做些有关这些文件的东西。

我的单进程版本:

cd ../src/assets 
find -type f -printf '%P\n' | 
while read -r filename 
do 
    # no exist == very old 
    if [[ "$filename" -nt ../../build/"$filename" ]]; then 
     echo "$filename" # do something about $filename 
    fi 
done 

如何把它变成水货版本?

回答

0

这是怎么了,我会做到这一点:

cd ../src/assets 
find -type f -printf '%p\n' | 
    sed 's,.*,[[ "&" -nt ../../build/"&" ]] \&\& echo "&",' | 
    parallel 

这创造了一堆表格的命令:

[[ "file1" -nt ../../build/"file1" ]] && echo "file1" 
[[ "file2" -nt ../../build/"file2" ]] && echo "file2" 
[[ "file3" -nt ../../build/"file3" ]] && echo "file3" 

,然后把它们平行于几个核心执行。

(需要GNU parallel

0

稍微简单的解决方案:

cd ../src/assets || exit 1 
find . ../../build -type f -printf '%f\n' | sort | uniq -d | parallel echo 
相关问题