Shell-Script

不能 mv 到自身的子目錄

  • May 5, 2016

我正在執行這個簡單的腳本,我正在嘗試創建一個 cron 作業,以便將文件複製到我的拇指驅動器(使用新名稱)

 sudo cp /home/pi/NewLog.log /media/usb
 sleep 20
 cd /media/usb
 sudo mv -f NewLog.log NewLog-$(date '+%FT%T').log
 sudo cp /dev/null /home/pi/NewLog.log

但我得到了錯誤

mv:無法將“NewLog.log”移動到其自身的子目錄“NewLog-2016-05-04T14:19:24.log”

/media/usb 中的 ls -l 顯示了這一點,

-rwxr-xr-x 1 root root   42747 Nov 30 16:18 backup xml.txt   
-rwxr-xr-x 1 root root  407517 Apr 28 11:07 Comparision log.log
-rwxr-xr-x 1 root root    4174 Apr 29 18:16 Friday.txt
drwxr-xr-x 2 root root   16384 May  4 14:12 Logs
-rwxr-xr-x 1 root root  594588 May  3 09:28 MachineHMAX___.log
-rwxr-xr-x 1 root root  737280 May  4 17:23 NewLog.log
-rwxr-xr-x 1 root root  415960 May  3 10:21 NewLog__.txt
-rwxr-xr-x 1 root root  267989 Apr 28 09:28 NewLog.txt
drwxr-xr-x 2 root root   16384 May 17  2015 System Volume Information
-rwxr-xr-x 1 root root  276588 Apr 29 11:05 Thur_a.txt
-rwxr-xr-x 1 root root  183600 Apr 29 11:05 Thur_b.txt
-rwxr-xr-x 1 root root  276370 Apr 28 11:22 Thurs.txt
-rwxr-xr-x 1 root root  460185 Apr 28 13:42 Thur.txt
-rwxr-xr-x 1 root root  676739 May  3 13:44 Tuesday.Log
-rwxr-xr-x 1 root root    8032 Apr 23 17:36 unix2dos.zip
-rwxr-xr-x 1 root root 7364727 May  4 08:45 Wednesday.txt

冒號 ( :) 字元在 FAT/VFAT 文件系統上的文件名中不是有效字元。rename系統呼叫(在mv後台呼叫)返回 EINVAL 狀態碼來表明這一點。試圖移動一個目錄使其成為它自己的子目錄會返回相同的狀態碼;mv僅列出可能的錯誤原因之一。

使用不同的時間格式。ISO 8601 格式可能是一個正式的標準,但它的標點形式處理起來很煩人。使用不帶標點的形式,或完全使用其他表示。由於您省略了時區指示,因此您目前沒有遵循 ISO 8601,這很糟糕,因為它使時間模棱兩可。此表單符合 ISO 標準,使用 UTC 時間,並且不包含任何標點符號:

date -u '+%Y%m%dT%H%M%SZ'

引用自:https://unix.stackexchange.com/questions/281062