Сохраняйте файлы в списке с помощью ls, удаляя части имени каталога с помощью sed - PullRequest
1 голос
/ 29 марта 2020

У меня есть папка, скажем, расположенная здесь:

/Users/spotter/Downloads

и в папке root есть два файла:

test1.txt и test2.txt.

Я хочу написать сценарий оболочки для сохранения всех файлов в списке с такой строкой:

file_list="$(ls /Users/spotter/Downloads)"

и echo $file_list return:

/Users/spotter/Downloads/test1.txt /Users/spotter/Downloads/test2.txt

Однако я хочу изменить часть имени. В частности, я хочу удалить /Users/spotter часть.

Я пробовал это так:

file_list="$(ls /Users/spotter/Downloads | while read path; do dirname "$path" | sed 's/users/spotter///'; done)"

, который возвращает:

sed: 1: "s/users/spotter/Downloa ...": bad flag in substitute command: 'D'

sed: 1: "s/users/spotter/Downloa ...": bad flag in substitute command: 'D'

когда я делаю echo $file_list Я хочу, чтобы это было выводом:

Downloads/test1.txt Downloads/test2.txt

1 Ответ

1 голос
/ 29 марта 2020

Проблема в том, что sed думает, что «/» - это разделитель между RE и заменой, поэтому sed не читает другие «/» так, как вы этого хотите. Вы можете использовать другие символы в качестве разделителя. Например 's~/Users/spotter/~~'.

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