shellscript檔案有空格如何篩選跟tar - Linux

Candice avatar
By Candice
at 2021-08-12T07:19

Table of Contents

不好意思又是我...

但我已經找遍各種方法都無解 只好再來麻煩各位(可能方向錯誤)

是這樣的我在我的資料夾/NAS/Ray內放了以下檔案
20210615 - A.xls
20210720 - A.xls
20210725 - A.xls
20210803 - A.xls

而我想要在每個月1號將上個月的資料全部打包命名為年+月
像是8/1 將檔名開頭為202107的檔案打包命名為2107.tar.gz
我的寫法:

last_month=$(date -d "$date +%Y%m)01 last month" +%Y%m)
file=$(ls $last_month*)


cd /NAS/Ray/

tar -zcvPf /NAS/Ray/2107.tar.gz $file

執行後顯示錯誤訊息
ls: cannot access '202107*': no such file or dierctory

但如果我直接到該路徑輸入
ls 202107*
是會正常顯示出開頭有202107的檔案


剛剛亂try(印象中是將ls改用find去找檔案)
有成功讀到檔案
但tar的時候就有問題了 錯誤訊息變成
tar: ./20210701: cannot stat:no such file or directory
tar: -: cannot stat:no such file or directory
tar: A.xls: cannot stat:no such file or directory
看起來是因為有空格的關係 變成三個檔案
這部分file變數該怎麼寫才能篩選月份又能忽略空格呢

另外還有遇到一個問題
如果要刪除目錄 使用rm -rf
rm -rf /NAS/Ray/123

如果Ray目錄下如果沒有123 會把目錄Ray刪掉
這部分怎麼解決呢
有查到使用-r會遞迴刪除 但刪目錄又必須加上-r

這部分是否只能先cd過去 再rm -rf 123呢


以上問題在麻煩大家了 糾結好久好痛苦QQ 拜託大家了

--
Tags: Linux

All Comments

Susan avatar
By Susan
at 2021-08-16T02:05
空格,加雙引號 " 試試?
目錄在後面加 / 試試?或者先 test 目錄是否存在
Belly avatar
By Belly
at 2021-08-20T22:55
rm 那段有問題吧 不會刪到你說的 Ray目錄才對
Kristin avatar
By Kristin
at 2021-08-24T13:24
打包的話 用find 加上 exec 試試看
Rae avatar
By Rae
at 2021-08-24T20:34
https://pastebin.com/bdzf2Pcu
Olive avatar
By Olive
at 2021-08-27T08:11
rm 無法再現
Margaret avatar
By Margaret
at 2021-09-01T08:10
你是不是執行 ls $last_month* 的資料夾錯了?
Quanna avatar
By Quanna
at 2021-09-04T20:08
https://www.cyberciti.biz/faq/linux-unix-find-tar-files
-into-tarball-command/
Rebecca avatar
By Rebecca
at 2021-09-05T02:46
基本概念就是find輸出列表、tar -T 用檔案形式取得檔案列表
Margaret avatar
By Margaret
at 2021-09-09T01:54
https://onlinegdb.com/2x-xwiGRT
Iris avatar
By Iris
at 2021-09-13T04:09
寫了個sample code給你參考
Caroline avatar
By Caroline
at 2021-09-15T02:34
有用到bash的process substitution
William avatar
By William
at 2021-09-15T19:36
我看之前的文章是用bash,為了方便就直接這樣寫
Noah avatar
By Noah
at 2021-09-19T07:50
大家不好意思 關於檔案刪除的問題 我描述錯誤了...
Faithe avatar
By Faithe
at 2021-09-21T13:26
我的寫法是rm -rf /NAS/Ray/$file 用意是想要包起來後
Lauren avatar
By Lauren
at 2021-09-26T10:54
把舊的檔案刪掉 但如果$file 篩選到的是資料夾 則正常work
但如果$file 篩選出來的是檔案(xls檔) 似乎就會變無效
Frederica avatar
By Frederica
at 2021-09-29T13:04
反而把/NAS/Ray的Ray資料夾刪掉了
Kama avatar
By Kama
at 2021-10-01T01:09
這部分已經有解出來了 感謝大大們提供的方向 後來是用find
Daniel avatar
By Daniel
at 2021-10-01T08:09
才有成功!! 真的超感謝大家!!!

關於 dev lib 手動安裝的問題

Carolina Franco avatar
By Carolina Franco
at 2021-08-12T06:48
※ [本文轉錄自 LinuxDev 看板 #1X55DFly ] 作者: gowrite (gowrite) 看板: LinuxDev 標題: [問題] 關於 dev lib 手動安裝的問題 時間: Thu Aug 12 06:46:37 2021 各位好, 最近在學習用一些套件跟軟體,在安裝階段想 ...

shellscript tar問題

Annie avatar
By Annie
at 2021-08-05T21:35
不好意思我又來了... 這幾天遇到一些問題想破頭只想出一點東西 決定還是來跟各位求助.. 因為剛學script 是超級菜雞 寫得很雜亂請大家見諒 #!/bin/bash last_month=$(date -d and#34;$(date +%Y%m)01 last monthand#34; +%Y%m) ...

直立外接螢幕待機後無法重開

Joseph avatar
By Joseph
at 2021-08-05T14:27
Lenovo T530 筆電,作業系統是 Ubuntu 20.04.2 LTS, 顯示卡 Nvidia NVS 5400M,用Mini DP外接了2560x1440的螢幕。 外接螢幕設橫向的時候一切正常,但是設定成轉90度直立的時候,一旦待機關閉螢幕, 就無法再正常顯示,不管是登入畫面還是登入後的畫面都不會 ...

makefile for loop 問題

Megan avatar
By Megan
at 2021-08-04T16:25
想請教一下,如果有這樣一個text file, Text.txt: a1 b1 c1 a2 b2 c2 ... a100 b100 c100 要怎麼樣在makefile的 for loop 當中用三個變數分別代表 a1~a100 b1~b100 c1~c100呢? 用 for i in $$(cat ...

想實現在外面連回家中的Linux主機

Eden avatar
By Eden
at 2021-08-03T01:42
目前設定到可以連同一個wifi,可以操作ssh來存取Linux電腦上的檔案 現在想要實現的是 能夠在外面(如連咖啡廳的wifi)也可以連回家中的Linux主機來進行存取, 目前想到的方法是利用teamviewer,這也是我一直操控實驗室電腦的方法 但我只想在terminal存取Linux上的檔案,不需 ...