我正在编写一个shell脚本,它将使用ls命令在目录中查找文件(ZIP)并将其解压缩到目标,问题是文件名之间有空格,所以当脚本扫描它时考虑只在空格后命名
示例:如果文件名是“a b c.zip”,则只有c.zip被认为是文件名,然后它说文件未找到。
所以请让我知道如何处理这个
我想如果我可以将文件名用双引号括起来它应该工作。所以我在寻找如何将双引号添加到ls命令的最后一个字段。 我需要ls命令的所有字段,因为我在解压缩之前检查文件大小和时间戳,所以我只需要用双引号括起文件名,这是ls命令的最后一个字段。
此致 沙迪亚
答案 0 :(得分:1)
我建议您使用Bash的通配符模式(可以处理空格)来获取文件列表,然后使用stat
命令获取有关特定信息的信息文件。例如:
$ ls -l
total 1
-rw-r--r-- 1 root root 0 2013-03-25 16:27 a b c.txt
-rw-r--r-- 1 root root 0 2013-03-25 16:27 d e f.txt
$ for file in *.txt; do stat "$file"; done
File: `a b c.txt'
Size: 0 Blocks: 1 IO Block: 131072 regular empty file
Device: 3dd0002h/64815106d Inode: 455629 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-03-25 16:27:35.388291856 +0800
Modify: 2013-03-25 16:27:35.388291856 +0800
Change: 2013-03-25 16:27:35.388310939 +0800
File: `d e f.txt'
Size: 0 Blocks: 1 IO Block: 131072 regular empty file
Device: 3dd0002h/64815106d Inode: 455630 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-03-25 16:27:35.388401772 +0800
Modify: 2013-03-25 16:27:35.388401772 +0800
Change: 2013-03-25 16:27:35.388412772 +0800
$
请注意,stat
有一个--format
选项,因此您可以告诉它只为您提供您感兴趣的有关文件的信息。