2012-01-26 27 views
11

oluşturmak yönlendirme nasıl $ffolder/file.txt gibi bir şey klasörü folder oluşturmak nerede olacak Aşağıdaki komutBASH klasörü

echo "something" > "$f" 

eğer yoksa sahip olabilir?

Bunu yapamazsam, 'a' dizinine 'a' dizinindeki tüm klasörleri (içerik içermeyen) çoğaltma komut dosyası nasıl olabilir?

mesela ben varsa

a/f1/
a/f2/
a/f3/Ben istiyorum

b/f1/
b/f2/
b/f3/

cevap

11

diğer cevaplar dış komutu "birdizin" kullanıyor. Bu harici bir yardımcı program çağırmadan yapılabilir.

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

dizin zaten varsa da kontrol edebilirsiniz, ama bu gerçekten mkdir -p ile gerekli değildir:

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

Teşekkür ipucu, ancak doğru sözdizimi aslında '$ {olduğu f%/*} ' – baruch

+0

Cevabı güncelledim. Üzgünüm, size 'basename' alternatifi verdim, 'dirname' değil. – jordanm

5

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

Sen dosyaya yazmadan önce bir klasör oluşturmak için mkdir -p kullanabilirsiniz: Burada

mkdir -p "$(dirname $f)" 
0
echo "something" | install -D /dev/stdin $f