«Найти» вывод относительно каталога

Я хотел бы использовать find чтобы перечислить все файлы и каталоги рекурсивно в данном корне для операции cpio . Однако я не хочу, чтобы корневой каталог сам отображался в путях. Например, в настоящее время я получаю:

 $ find diskimg diskimg diskimg/file1 diskimg/dir1 diskimg/dir1/file2 

Но я хотел бы получить

 file1 dir1 dir1/file2 

(обратите внимание, что корень также не в моем желаемом выходе, но это легко избавиться от tail ).

Я нахожусь в OS X, и я бы предпочел не устанавливать какие-либо дополнительные инструменты (например, GNU find), если это возможно, так как я хотел бы поделиться сценарием, который я пишу другим пользователям OS X.

Я знаю, что это можно сделать с помощью cut чтобы вырезать корневой список, но это кажется субоптимальным решением. Есть ли лучшее решение?

3 Solutions collect form web for “«Найти» вывод относительно каталога”

Если то, что вы пытаетесь сделать, не слишком сложно, вы можете выполнить это с помощью sed:

 find diskimg | sed -n 's|^diskimg/||p' 

Или cut :

 find diskimg | cut -sd / -f 2- 

cd в каталог сначала:

 cd diskimg && find . 

По завершении вы вернетесь в свой корневой каталог.

Ваши файлы будут добавлены с ./ в этом случае; единственный способ, которым я вижу вокруг, – использовать cut :

 { cd diskimg && find .; } | tail -n +2 | cut -c 3- 

Используйте подоболочку, чтобы избежать изменения текущего каталога вашей оболочки (это не обязательно, если вы выполняете вывод на выходе, поскольку левая часть трубы уже выполняется в подоболочке).

 (cd diskimg && find .) 

Другой, более сложный, но использующий только подход find из моего другого ответа:

 find diskimg -mindepth 1 -printf '%P\n' 
  • Почему вы жалуетесь на недопустимое выражение?
  • Как сканировать с помощью find для всех файлов, у которых есть бит выполнения?
  • ssh-add добавить все закрытые ключи в .ssh каталог
  • Рекурсивно удалять файлы с idx> 10000
  • Фильтрация результата команды find, так что она возвращает только каталоги
  • найти на множестве каналов, которые могут не существовать
  • найти каталог путей в подкаталоге
  • Найти и регулярное выражение
  • Простой сценарий bash для резервного копирования и удаления каталогов
  • Поиск файлов внутри нескольких подкаталогов и zip-каталогов
  • Почему поиск выглядит в текущем каталоге?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.