У меня есть папка, которая имеет несколько папок с 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 ответ1

0

Когда в строках есть пробелы, оболочка интерпретирует их как отдельные команды. Вам нужно заключить путь в кавычки, чтобы оболочка знала, что это единое целое.

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 {} \;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .