创建包含空格的子文件夹内的文件的软链接?

创建包含空格的子文件夹内的文件的软链接?

我有一个文件夹,里面有几个文件夹,每个文件夹里都有 ISO。有些文件和文件夹的名称有空格。以下是示例文件夹结构:

/ISOs
-CentOS
--Centos6
---Centos6_x64.iso
---Centos6_x86.iso
-Windows_10_Pro
--Windows_10_Pro.iso
-Windows 10 Enterprise
--Windows 10 Enterprise.iso

尝试的命令:

find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso | xargs ln -sf /mnt/fs2/Shares/Images$/proxmox/template/iso

for file in "$(find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso)"; do ln -sf /mnt/fs2/Shares/Images$/server/template/iso/$file;

使用上述命令,它将创建指向文件的链接,但会忽略文件夹/子文件夹名称或文件名称中包含空格的任何内容:

/iso
-Centos6_x64.iso
-Centos6_x86.iso
-Windows_10_Pro.iso

列出此文件夹中包含的所有文件的最佳方法是什么?

答案1

当字符串中有空格时,shell 会将其解释为单独的命令。您需要将路径括在引号中,以便 shell 知道它是一个单元。

for file in "$(find /mnt/fs1/Shares/Software$/ISOs/ -name \*.iso)"; do ln -sf "/mnt/fs2/Shares/Images$/server/template/iso/$file;"

我在我的系统上尝试了类似的命令,更简单的方法是

find /mnt/fs1/Shares/Software$/ISOs/ -name "*.iso" -exec ln -sf {} \;

相关内容