BASH создать папку переадресации

Как я могу получить следующую команду

echo "something" > "$f"

где $f будет что-то вроде folder/file.txt создать папку folder, если не существует?

Если я не могу этого сделать, как я могу script дублировать все папки (без содержимого) в каталоге 'a' в каталог 'b'?

например, если у меня есть

а/f1/
а /f 2/
а/f3/

Я хочу иметь

б/f1/
б /f 2/
б/f3/

Ответ 1

В других ответах здесь используется внешняя команда "dirname". Это можно сделать без вызова внешней утилиты.

mkdir -p "${f%/*}"

Вы также можете проверить, существует ли каталог, но этого не требуется с помощью mkdir -p:

mydir="${f%/*}"
[[ -d $mydir ]] || mkdir -p "$mydir"

Ответ 2

попробовать

mkdir -p `dirname $f` && echo "something" > $f

Ответ 3

Вы можете использовать mkdir -p для создания папки перед записью в файл:

mkdir -p "$(dirname $f)"

Ответ 4

echo "something" | install -D /dev/stdin $f