Как получить имя файла и путь из полного пути в bash - PullRequest
0 голосов
/ 25 января 2020

/ mnt / googledrive / Recordings / vl c -record-2020-01-25-19h13m06s-S3510003.MP4-.mp4

Я хотел бы получить 2 переменные:

  • / mnt / googledrive / Записи /
  • vl c -record-2020-01-25-19h13m06s-S3510003.MP4-.mp4

I пробовал следующее:

    filename=${file%.mp4}
    /mnt/googledrive/Recordings/vlc-record-2020-01-25-19h13m06s-S3510003.MP4-

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Есть две сборки dirname для пути и basename для имени файла

file=/home/user/test.txt
$ dirname $file
/home/user

$ basename $file
test.txt

Vars

filename=$(basename $file)
dirname=$(dirname $file)
1 голос
/ 25 января 2020

Дано:

file="/mnt/googledrive/Recordings/vlc-record-2020-01-25-19h13m06s-S3510003.MP4-.mp4"

Если вы хотите , просто укажите имя файла :

filename=${file##*/}

# и ##, удалив соответствующий префиксный шаблон. ## означает «сопоставление с самым длинным шаблоном сопоставления», поэтому оно сопоставляется до тех пор, пока не останется / для сопоставления.

Если вы хотите , просто каталог :

dirname=${file%/*}

% и %% удаляют соответствующий шаблон суффикса. Мы используем % здесь, потому что мы хотим удалить все только после последнего /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...