我有一个文件夹,里面有几个文件夹,每个文件夹里都有 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 {} \;