파일 경로에서 디렉토리 경로를 추출하는 방법
Bash에서는 만약VAR="/home/me/mydir/file.c"
, 입수방법"/home/me/mydir"
?
dirname
그리고.basename
패스 컴포넌트를 추출하기 위해 필요한 툴은 다음과 같습니다.
$ VAR='/home/pax/file.c'
$ DIR="$(dirname "${VAR}")" ; FILE="$(basename "${VAR}")"
$ echo "[${DIR}] [${FILE}]"
[/home/pax] [file.c]
사내용이 아닙니다.bash
명령어는 POSIX 표준의 일부입니다(및 을 참조).따라서 이러한 기능은 실행할 수 있는 대부분의 플랫폼에서 사용할 수 있거나 사용할 수 있습니다.bash
.
$ export VAR=/home/me/mydir/file.c
$ export DIR=${VAR%/*}
$ echo "${DIR}"
/home/me/mydir
$ echo "${VAR##*/}"
file.c
과의 의존을 피하기 위해basename
그리고.dirname
이와 관련하여 파일 이름 또는 상대 경로만 있는 경우dirname
그것만으로는 도움이 안 돼요저에게 있어서 답은 결국readlink
.
fname='txtfile'
echo $(dirname "$fname") # output: .
echo $(readlink -f "$fname") # output: /home/me/work/txtfile
그런 다음 이 두 개를 결합하여 디렉토리만 가져올 수 있습니다.
echo $(dirname $(readlink -f "$fname")) # output: /home/me/work
대상 파일을 심볼릭 링크로 할 경우 먼저 체크하고 원본 파일을 얻을 수 있습니다.아래의 if 절이 도움이 될 수 있습니다.
if [ -h $file ]
then
base=$(dirname $(readlink $file))
else
base=$(dirname $file)
fi
HERE=$(cd $(dirname $BASH_SOURCE) && pwd)
여기서 new_path=를 사용하여 전체 경로를 얻을 수 있습니다.$(dirname ${BASH_SOURCE[0]})
현재 디렉토리를 변경하려면cd
new_path를 실행하고 나서pwd
현재 디렉토리의 전체 경로를 가져옵니다.
저는 이걸 가지고 놀다가 대안을 생각해 냈어요.
$ VAR=/home/me/mydir/file.c
$ DIR=`echo $VAR |xargs dirname`
$ echo $DIR
/home/me/mydir
트리의 백업을 쉽게 확장할 수 있다는 점이 마음에 들었습니다.
$ DIR=`echo $VAR |xargs dirname |xargs dirname |xargs dirname`
$ echo $DIR
/home
'컷'을 사용하여 마지막 필드를 찾는 방법에 대한 접근 방식을 사용하여 다음과 같은 작업을 수행할 수 있습니다.
설명.
rev
되돌아가다/home/user/mydir/file_name.c
되려고c.eman_elif/ridym/resu/emoh/
cut
사용하다/
딜리미터로 두 번째 필드를 선택합니다.ridym/resu/emoh/
이 명령어는 첫 번째 문자열까지를 삭제합니다./
- 마지막으로 다시 반대로 해서
/home/user/mydir
$ VAR="/home/user/mydir/file_name.c"
$ echo $VAR | rev | cut -d"/" -f2- | rev
/home/user/mydir
여기 재귀 트리밍에 사용한 스크립트가 있습니다.물론 $1을 원하는 디렉토리로 바꿉니다.
BASEDIR=$1
IFS=$'\n'
cd "$BASEDIR"
for f in $(find . -type f -name ' *')
do
DIR=$(dirname "$f")
DIR=${DIR:1}
cd "$BASEDIR$DIR"
rename 's/^ *//' *
done
패스가 절대적인 것이 좋기 때문에 (첫 번째) bash 파라미터에서 필요합니다(변수, 변수 없음).$pdf
스크립트 위치가 아님):
즉, 선택한 파일($1) 옆에 하위 폴더를 안정적으로 작성하려면:
rp="$(realpath $(dirname $1)/pfd_extract)"
mkdir -p "$rp"
언급URL : https://stackoverflow.com/questions/6121091/how-to-extract-directory-path-from-file-path
'programing' 카테고리의 다른 글
지정된 텍스트를 포함하는 파일 찾기 (0) | 2023.04.22 |
---|---|
'System' 형식의 개체를 캐스팅할 수 없습니다.DBNull'을 클릭하여 'System'을 입력합니다.문자열 (0) | 2023.04.22 |
입력 타입="날짜" 형식을 변경할 수 있는 방법이 있습니까? (0) | 2023.04.22 |
스크립트에서 사용할 커스텀 타입을 PowerShell에서 작성하려면 어떻게 해야 합니까? (0) | 2023.04.22 |
숨겨진 UIView가 있는 자동 레이아웃? (0) | 2023.04.22 |