假设我想比较这两个目录之间具有相同文件名的文件:
/tmp/datadir/dir1/dir2/
Run Code Online (Sandbox Code Playgroud)
和
/datadir/dir1/dir2/
Run Code Online (Sandbox Code Playgroud)
在比较之前需要对它们进行排序。
我目前在/tmp
目录中,我尝试find
使用以下exec
选项运行它:
find datadir -type f -exec sdiff -s <( sort {} ) <( sort "/"{} ) \;
Run Code Online (Sandbox Code Playgroud)
但是,它给了我一个错误
排序:打开失败:{}:没有这样的文件或目录
排序:打开失败:/{}:没有这样的文件或目录
但是,下面的命令工作正常,但没有对数据进行排序以进行适当的比较。
find data -type f -exec sdiff -s {} "/"{} \;
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
phk*_*phk 10
的替换{}
由您的代码find
中的进程替换 ( <(…)
) 等评估完成并发生。
使用bash -c
:
find datadir -type f -exec \
bash -c 'sdiff -s <( sort "$1" ) <( sort "/$1" )' bash {} \;
Run Code Online (Sandbox Code Playgroud)
或者避免bash
为每个文件运行一个实例:
find datadir -type f -exec bash -c '
for file do
sdiff -s <( sort "$file" ) <( sort "/$file" )
done' bash {} +
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
433 次 |
最近记录: |