Stat
獲取 FOR 循環呈現的文件的時間戳
我的目標是找到 $ files on some $ 設備並將它們保存到一個或多個文件夾,這些文件夾的名稱與每個文件的時間戳相對應。要獲得我想使用 stat 的時間戳。
與 echo “$files” 相比,stat 不會單獨處理每個文件。相反,當我使用“”時,它似乎一次處理所有文件。
您對如何改進報價有任何建議或任何其他關於如何使 stat 能夠做我想要做的事情的提示?非常感謝您的幫助。
#!/bin/bash for devices in "$(ls /media/*/)"; do for files in "$(find /media/*/$devices -iname *.jpg)"; do echo "$files" # prints all files in separate lines stat "$files" # seems to process all files at once stat $files # splits file paths at spaces done done
問題不在於循環
stat
中的源數據,而在於源數據;for
因為您已將其全部括在引號中,所以它成為一個長的單一實體。要解決此問題,請刪除它周圍的引號,因此:
for files in $(find /media/*/$devices -iname "*.jpg");
只要文件或路徑都沒有空格,它就可以工作。但是有一個更優雅的解決方案,它適用於空格甚至奇怪的文件名(例如包含引號或換行符的文件名):
while IFS= read -r -d '' file; do # operations on each "$file" here done < <(find /media/*/$devices -type f -iname *.jpg -print0)