У меня есть список файлов, созданных из find. Из-за некоторого плохого планирования со стороны руководства мне теперь нужно проверить эти файлы, но команда поиска заняла несколько часов, так как мы сканируем несколько ТБ данных. Поэтому я планировал просмотреть список файлов со скриптом и запустить статистику на основе файлов, которые мы уже нашли. Проблема в том, что BASH постоянно сообщает, что все файлы не существуют внутри скрипта, но выполнение любой команды с файлами вне скрипта (только на терминале) работает нормально.
EX:
sh ~/temp.sh | head -1
stat: ./2017\ Digital/redacted\ Projects-redacted-IP.idx: stat: No such file or directory
stat -x ./2017\ Digital/redacted\ Projects-redacted-IP.idx
File: "./2017 Digital/redacted Projects-redacted-IP.idx"
Size: 25165824 FileType: Regular File
Mode: (0500/-r-x------) Uid: (redacted) Gid: (redacted)
Device: 47,12 Inode: 440520 Links: 1
Access: Wed Jul 5 17:24:48 2017
Modify: Wed Jul 5 17:24:48 2017
Change: Wed Jul 5 17:24:48 2017
i=0
IFS=$'\n'
for j in $(cat ~/files); do
stat -x $j
done
Это общие папки Windows, смонтированные в /Volumes / в OSX. Независимо от того, как я, кажется, изменяю цитаты (двойные / одинарные / нет / и т.д.), Скрипт постоянно сообщает, что ВСЕ файлы не существуют. Я также попробовал Python-версию скрипта:
from subprocess import call
f=open( "/Users/me/files", "r" )
for l in f:
call(["stat","-x","/Volumes/"+l])
С той же ошибкой. Кажется, проблема напрямую связана с пробелами в именах файлов. Поскольку при жестком кодировании другого файла без пробелов он работает просто отлично. Я предполагаю, что мне нужно сделать что-то с цитированием моих переменных по-другому? Но я не могу при всей жизни понять, как правильно процитировать эти переменные, чтобы заставить его работать.