Следует избегать поиска в целевом каталоге. Таким образом, вы можете добавить ! -path $ TARGET _ DIR
как например:
find . -name '*.template' ! -path "*3DBGB_run/*" -exec mv -it ./3DBGB_run {} \+
-121-102790-
Я боролся с той же проблемой. Для работы поиска NetBIOS отредактируйте строку /etc/nsswitch.conf
и добавьте «wins» в строку «hosts:».
Пример:
hosts: files dns wins
Затем отредактируйте файл /etc/samba/smb.conf
и добавьте/отредактируйте строку wins server =
, чтобы добавить WINS-сервер. К вашему сведению, Samba не будет работать как сервер и клиент, поэтому, если у вас есть wins support = yes
, вам потребуется отключить его или настроить для работы с OpenConnect.
-121--61388-
find
находит ваши файлы дважды: в том месте, где они начинались, и в котором вы их перенесли. Это означает, что он в конечном итоге работает:
mv -i 3DBGB_run/x.template 3DBGB_run/x.template
и создает ошибку, которую вы видите.
find
видит файлы «live» по мере их появления - он не создает список заранее, а затем выполняет команду для всех элементов списка. Порядок, в котором он просматривает файлы и каталоги, не определен (вероятно, он будет получен из файловой системы), поэтому это произойдет для каждого файла, проверенного перед тем, как каталог будет перемещен в.
Поскольку find
не знает, что вы делаете в -exec
, он не может компенсировать это. Вы можете сделать несколько вещей об этом:
найти. -name '* .template' -path. «/3DBGB _ run »-prune -o -exec mv -i {} ./3DBGB_run\;
. Часть -path
соответствует каталогу, в который вы перемещаете вещи, а часть -prune
затем исключает это дерево из рекурсии. -o
вызывает выполнение остальной части команды (исходная команда -exec
). Команда никогда не выполняется для файлов в каталоге. (Это явный пример в руководстве GNU найти
) Создать список перед перемещением. В некоторых случаях это может быть лучше, но если имена файлов содержат места или другие символы IFS
, то это не так удачно. Если это не применимо, что-то вроде:
files = $ (find. -name '* .template')
mv «$ {files [@]}» 3DBGB_run
также будет работать.
При использовании find -exec
команда завершается на +
вместо ;
заставляет find
выполнять минимальное количество команд, собирая несколько аргументов в каждом выполнении, что является более эффективным. Иногда это не подходит для конкретной команды, но здесь было бы хорошо. Если это одноразовая команда, это не имеет значения, но если вы выполняете ее много, то сохранение процессов сэкономит время.
LVM может разбивать файл на несколько томов, и в некоторых случаях это необходимый компорт.
LVM работает как физическая часть, только верхние разделительные шемы, следовательно, это агностическая файловая система и не знает концепции файла, управляемого файловой системой.
Чтобы убедить вас лучше, LVM способна заключать соглашения, как это делает RAID0, xKbites с первого диска, рядом со вторым, ...
LVM ничего не знает о файлах. Это обеспечивает большой блок хранения. Это зависит от файловой системы, чтобы организовать этот блок для хранения файлов, и файловая система не знает (и не хочет ухаживать), о которых файлы находятся на каком физическом объеме.
Даже если файл полностью содержится в одном физическом объеме (который для большинства файловых систем гарантирован, если файл достаточно маленький - меньше, чем размер блока файловой системы, который обычно находится в диапазоне 512B-4KB), вы все еще T Быть в состоянии установить только этот физический объем и увидеть файл. Вы не можете установить произвольный кусок файловой системы. Показания какого файла хранятся там, где не хранятся в том же месте, что и сам файл; Чтобы добраться до файла, вам необходимо перейти в цепочку каталога в файл, и есть дополнительные метаданные (большинство файловых систем Unix имеют таблицу inode), которая необходимо для получения любых данных.
Если вы хотите гарантию, касающуюся файла на каком диске, поставьте диски в разные группы громкости. Или, по крайней мере, создайте разные логические тома (вы можете перемешать LVS между PVS с PVMove
).