[英]mkdir with sed in bash script
我想創建目錄,其名稱應與父目錄中的壓縮文件列表相對應。 另外,我想擺脫目錄擴展名中的文件擴展名。
例如archive01.gz應導致名稱為archive01的目錄
到目前為止,我的腳本是:
#!/bin/bash
for file in *.gz; do
echo $file | sed 's/.gz//' | mkdir
done
錯誤消息是:
mkdir: missing operand
然而,
echo $file | sed 's/.gz//'
導致目錄名稱正確。 如何將其通過管道傳輸到mkdir?
更好的方法是使用參數替換而不是管道/子外殼:
#!/bin/bash
for file in *.gz; do
mkdir ${file%.gz}
done
嘗試這個,
#!/bin/bash
for file in *.gz; do
echo "$file" | sed 's/\.gz//' | xargs mkdir
done
mkdir不適用於管道。 請嘗試以下操作:
mkdir `echo $file | sed 's/.gz//'`
`會求值,然后將其替換為答案。 這稱為命令替換,也可以寫成:
mkdir $(echo $file | sed 's/.gz//')
您可以使用命令替換作為
#!/bin/bash
for file in *.gz; do
mkdir $(echo $file | sed 's/.gz//')
done
要么
#!/bin/bash
for file in *.gz; do
mkdir `echo $file | sed 's/.gz//'`
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.