Как найти, а затем сравнить похожие файлы в папке Dropbox?

1153
pcapademic

Я использую Dropbox, и я получаю несколько файлов, таких как:
prefs (доменная копия 2009-07-20) .js

То, что я хотел бы сделать, это найти все файлы "конфликтующих копий ...", а затем сравнить каждый из них с его неконфликтной версией.

Например, следующая команда дает мне результат:

$ find . -name "*onflict*" -exec ls -ld {} \; -rw-r--r-- 1 eric eric 24203 2009-07-19 14:42 ./prefs (home's conflicted copy 2009-07-20).js 

но я хотел бы вывод, как:

-rw-r--r-- 1 eric eric 24429 2009-07-21 11:43 prefs.js -rw-r--r-- 1 eric eric 24203 2009-07-19 14:42 prefs (home's conflicted copy 2009-07-20).js 

и тогда я могу решить, что я хочу сделать с конфликтующей копией. Есть идеи?

2

2 ответа на вопрос

2
pcapademic

Я понял что-то, что, кажется, работает, но я хотел бы получить предложения по его улучшению, в том числе сделать его чище:

find . -name "*onflict*" | while read name; do ls -ld "$name"; ls -ld "$"; echo -n "$name" | xargs -0 -p rm ; echo ; done 

В более легко читаемом и набранном формате:

find . -name "*onflict*" | \ while read name; do  ls -ld "$name" ls -ld "$" echo -n "$name" | xargs -0 -p rm  echo  done 

Рекомендации:

0
Stefan Thyberg

После того, как вы сопоставили конфликтующее имя файла, используйте регулярное выражение, чтобы заменить круглые скобки и пробел звездочкой, и выполните, например:

ls -d "prefs*.js" 
Кстати, пример ls -d "prefs * .js" - это пример расширения имени файла оболочки или сопоставления с шаблоном оболочки, функциональность которого является подмножеством полных регулярных выражений. pcapademic 14 лет назад 0
Но как применить регулярное выражение к {} в опции команды find -exec? pcapademic 14 лет назад 0
Возможно, вы захотите написать вместо этого версию на Perl, но я готов поспорить, что она может быть написана всего одной строкой с использованием awk / sed, я просто недостаточно опытен, чтобы описать это. Stefan Thyberg 14 лет назад 0

Похожие вопросы