我有这个脚本
try
{
Process.Start(path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
它输出以下内容:
library(multilevel)
data <- sim.multi(n.obs=4,nvar = 2, nfact=2, ntrials=96, days=16, mu=0,sigma=1, fact=NULL, loading=.9, phi=0,phi.i=NULL,beta.i=0,mu.i=0, sigma.i = 1,sin.i=0, cos.i=0, AR1=0, f.i=NULL, plot=TRUE)
现在,我只想将最后一部分(路径)保存在数组中。 当我在排序之后添加
#!/bin/bash
path=$1
find "$path" -type f -exec sha1sum {} \; | sort | uniq -D -w 32
我将其作为输出:
3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16 ./dups/dup1-1.txt
3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16 ./dups/dup1.txt
ffc752244b634abb4ed68d280dc74ec3152c4826 ./dups/subdups/dup2-2.txt
ffc752244b634abb4ed68d280dc74ec3152c4826 ./dups/subdups/dup2.txt
将| awk -F " " '{ print $1 }'
更改为3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16
3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16
ffc752244b634abb4ed68d280dc74ec3152c4826
ffc752244b634abb4ed68d280dc74ec3152c4826
时,什么也没得到,但是我想获取文件的路径。
我应该怎么做?
编辑:
此脚本
$1
输出
$2
当我将其更改为#!/bin/bash
path=$1
find "$path" -type f -exec sha1sum {} \; | awk '{ print $1 }' | sort | uniq -D -w 32
时,它将输出
parallels@mbp:~/bin$ duper ./dups
3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16
3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16
ffc752244b634abb4ed68d280dc74ec3152c4826
ffc752244b634abb4ed68d280dc74ec3152c4826
预期产量
$2
目录中的某些文件互不重复。如nodup1.txt和nodup2.txt。这就是为什么它不显示。
答案 0 :(得分:1)
将您的find
命令更改为此:
find "$path" -type f -exec sha1sum {} \; | uniq -D -w 41 | awk '{print $2}' | sort
我将uniq
作为第一个过滤器,它只考虑了前41个字符,目的是仅匹配sha1sum
哈希。
答案 1 :(得分:0)
您可以将相同的结果传递到tr
,然后传递到cut
:
echo '3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16 ./dups/dup1-1.txt' |\
tr -s ' ' | cut -d ' ' -f 2
输出:
./dups/dup1-1.txt
-s ' '
是压缩空间-d ' ' -f 2
上的cut
用于输出用空格分隔的第二个字段答案 2 :(得分:0)
我喜欢使用cut
这样的东西。输入以下内容:
3c8b9f4b983afa9f644d26e2b34fa3e03a2bef16 ./dups/dup1-1.txt
我会做cut -d ' ' -f 2
,应该返回:
./dups/dup1-1.txt
我还没有针对您的情况进行测试。
编辑:贡萨洛·马修(Gonzalo Matheu)的回答更好,因为他确保在执行剪切之前删除输出之间的任何多余空间。