所以我需要在很多苍蝇上调用stat并将结果输出到文本文件中。我试过这个
stat 'Dir/$file_names' -c %n,%s,%y >> meta.txt
$ file_name的格式为:
"file1" "file2" "file3"
但它不起作用,因为当调用stat时,引号仍保留在路径中。
有没有办法删除它们或者可能循环遍历字符串?
另外一些文件名有空格,所以我引用可能需要指定文件
使用以下命令
设置文件名字符串file_name=`ssh user@server find /attachments -type f -mtime -100 -daystart -printf '\"%f\"\ ' `
答案 0 :(得分:1)
为了扩展变量,请使用双引号:
stat "Dir/$file_names" -c %n,%s,%y >> meta.txt
如果$file_names
包含多个文件名,则可以使用for循环并以使用分隔符的方式格式化变量。例如,您可以使用:
分隔文件名,而不是:
"file1" "file2" "file3"
改为使用:
file1:file2:file3
然后将IFS
特殊变量(它被称为“内部字段分隔符”并被shell识别)设置为:
并使用for循环:
IFS=":" for f in $file_names do stat "Dir/$f" -c %n,%s,%y >> meta.txt done
如果您只需要一个命令,这也可以是一行代码:
IFS=":"; for f in $file_names; do stat "Dir/$f" -c %n,%s,%y >> meta.txt; done
即使您的文件名包含空格,这也将确保一切正常,如:
file1:file with spaces:even more spaces
答案 1 :(得分:1)
对此进行了尝试,并以此方式工作:
list_of_file="Dir/file1 Dir/file2 Dir/file3"
stat $list_of_file -c %n,%s,%y >> meta.txt
meta.txt将包含所有文件的统计信息输出。
答案 2 :(得分:0)
尝试
for f in $file_names ; do
stat Dir/$f -c %n,%s,%y >> meta.txt
done
但如果你想用空格处理文件名(我尽量避免使用),这可能无法达到你想要的效果。