2

Я использую 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

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

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

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

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

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

0

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

ls -d "prefs*.js"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .