Я изо всех сил пытаюсь найти случай, когда я бы хотел использовать os.path.normpath
. В системе с символьными ссылками, такой как unix или Windows, возвращаемое значение может не обозначать один и тот же файл:
$ mkdir /tmp/one /tmp/one/two
$ ln -s /tmp/one/two /tmp/foo
$ python -c 'import os.path; print os.path.normpath("/tmp/foo/..")'
/tmp
$ ls /tmp/foo/..
two
/tmp/foo/..
- это /tmp/one
, а не /tmp
!
В Linux readlink -- "$filename"
нормализует все символические ссылки в пути. Возвращаемое имя файла обозначает тот же файл, что и $filename
во время выполнения команды (в противном случае может не произойти, если одна из задействованных символических ссылок будет изменена). Но в большинстве случаев в этом нет необходимости: просто оставьте $filename
как есть.
Если вы хотите удалить префикс ./
по косметическим причинам, просто удалите его специально.
filename=${filename#./}
find | sed -e 's!^\./!!'