2015-03-12 2 views
0

В простейшем случае, если я исполнюудаления Префикс пути из поиска результатов

find . -type f -exec cp {} /new/path/{}

Путь, который расширяется в /new/path/./path/to/file. Я хотел бы удалить это ./, которое префикс команды find, прежде чем использовать {} в exec.

Я использую встроенную функцию Freebsd, но у меня есть доступ к gnufind, если это поможет (хотя я обычно не использую gnufind).

+2

каталог Почему удалить его? Это ничего не должно навредить. –

+0

В приведенном примере нет. Но для чего мне нужно ./ - проблема. Это неважно, зацикливая находку. – lbutlr

ответ

1

Где вы будете иметь проблемы, когда находка спускается в подкаталогах, и он пытается EXEC что-то вроде cp ./foo/bar.txt /new/path/./foo/bar.txt и «/ новый/путь» не имеет подкаталог «Foo» - вы можете:

  • указать -maxdepth 1 так что вы не спускаетесь в подкаталоги

    find . -maxdepth 1 -type f -exec cp {} /new/path/{} \; 
    
  • просто использовать назначение каталога для cp, поэтому файлы в конечном итоге в одном директории (будет страдать от столкновений, если у вас есть»./foo/bar .текст" и "./qux/bar.txt")

    find . -type f -exec cp -t /new/path {} + 
    
  • использование tar скопировать все дерево: это будет сохранить структуру

    tar cf - . | (cd /new/path && tar xvf -) 
    
+0

Я удалил пример как можно больше, но ни одно из этих решений не работает для того, что мне нужно. Мне нужно удалить префикс './', который найдет места в {}. Единственный способ, которым я могу это сделать, - сделать что-то вроде 'for i in find ....; do <удалить символы>; ; но это не так идеально для моих нужд. Если это невозможно, все в порядке, я выясню что-то еще. – lbutlr

+0

@lbutlr Вы разделили вопрос до такой степени, что это неясно. 'найти. -тип f -printf '% P \ 0' | xargs -0 ... 'может работать, но я действительно не знаю – BroSlow

+0

@lbutlr Также' for i in $ (find ...) 'чрезвычайно подвержен ошибкам, если вы хотите что-то вроде' find ... -print0 | IFS = read -r -d $ '\ 0' i; do <удалить символы>; ; done' – BroSlow

 Смежные вопросы

  • Нет связанных вопросов^_^