亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Linux Shell:LOOP用于在每個文件夾中創建文件

Linux Shell:LOOP用于在每個文件夾中創建文件

至尊寶的傳說 2021-04-09 16:13:13
我想在每個文件夾中創建文件。這是我的命令for i in `ls`;do cd $i;touch test.txt;done-bash: cd: 10/: No such file or directory-bash: cd: 2/: No such file or directory-bash: cd: 3/: No such file or directory-bash: cd: 4/: No such file or directory-bash: cd: 5/: No such file or directory-bash: cd: 6/: No such file or directory-bash: cd: 7/: No such file or directory-bash: cd: 8/: No such file or directory-bash: cd: 9/: No such file or directory它僅test.txt在文件夾中生成1/,其余文件夾為空白。我認為原因是我的命令缺乏{ }澄清LOOP的規模。你能幫我更新我的命令嗎?
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

for dir in */; do
   touch "$dir/test.txt"
done
  1. 無需cd進入目錄即可在其中創建文件。

  2. 不要解析的輸出ls。的輸出ls僅用于查看。如果文件或目錄的名稱包含文字換行符或空格,則解析將中斷。

  3. 該模式*/將匹配當前目錄中的任何目錄。

  4. 引用您的變量擴展。如果將代碼IFS設置為數字,則代碼將中斷。

如果您確實需要對cd目錄執行a操作,請在子shell中進行操作。更改后的工作目錄僅影響子外殼,因此無需cd備份。

for dir in */; do
   ( cd "$dir" && touch test.txt )
done


查看完整回答
反對 回復 2021-04-16
?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

cd進入目錄,但是您不cd退出。假設列表中的第一個目錄是1,您的腳本首先更改為1,然后嘗試將其更改為1/10,該腳本不存在。

您可以cd -在觸摸文件后執行“ a ”操作。

更好的是,您cd完全避免使用,touch $i/test.txt而是改為執行。

當然,編寫的腳本不是很健壯:如果當前目錄包含純文件,則腳本將中斷;如果包含名稱中帶有空格的條目,則腳本將中斷-但這是另一個問題。


查看完整回答
反對 回復 2021-04-16
  • 3 回答
  • 0 關注
  • 439 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號