Você não pode comparar arquivos com [ a = b ]
. Use cmp
:
if cmp -s "$i" "$j"; then
# rest as you were
Eu tenho uma variável que eu usei para representar arquivos duplicados encontrados em um determinado diretório
ddub='find $1* -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} find -type f -size {}c -print0 '
Em seguida, passei por este diretório para comparar o link físico a quaisquer duplicatas do arquivo original, bem
echo $ddub #Print the results
for i in $ddub; do
for j in $ddub ; do
if cmp -s "$i" "j" ; then
ln $i $j
elif ;
echo "csnt hardlink the files"
fi
O problema aqui é que ele tenta linkar todos os arquivos da lista que não funcionam como eu gostaria. Eu gostaria de separar os arquivos exclusivos dos demais e depois vinculá-los.
Como eu faço loop adicional sobre isso, de modo a vincular apenas arquivos MD5sum similares encontrados na lista ou arquivos com o mesmo tamanho?
os resultados que recebo são os seguintes, que é apenas a lista de todos os arquivos que eu criei. por favor me ajude a descobrir como posso separá-los ainda mais (note que acabei de criar arquivos aleatórios)
ln ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy ./test_dir/test_dir2/29.JPG.copy.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy./test_dir/test_dir2/29.JPG.copy.copy.copy.copy.copy./test_dir/29.JPG./test_dir/29.JPG.copy./test_dir/29.JPG.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy./test_dir/test_dir2/23.JPG.copy.copy.copy.copy.copy./test_dir/09.JPG.copy./test_dir/09.JPG./test_dir/09.JPG.copy.copy./test_dir/39.JPG./test_dir/39.JPG.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy.copy.copy./test_dir/test_dir2/22.JPG.copy.copy.copy./test_dir/22.JPG./test_dir/22.JPG.copy.copy./test_dir/22.JPG.copy
[asonganyif@ccad2 November_2016]$ vim bashScripass.sh
Você não pode comparar arquivos com [ a = b ]
. Use cmp
:
if cmp -s "$i" "$j"; then
# rest as you were
Tags bash linux scripting shell-script rhel