Para mover todos los directorios debajo de /home/lanein1/AshtonRPOUT/
que tiene una hora de modificación de 30 días en el pasado, pero deja intacto el directorio superior (/home/lanein1/AshtonRPOUT/
), puede usar
find /home/lanein1/AshtonRPOUT/ -mindepth 1 -maxdepth 1 -type d \
! -path '/home/lanein1/AshtonRPOUT/Arch*' -mtime +30 \
-exec mv {} /home/lanein1/AshtonRPOUT/Arch/ ';' -prune
Cosas a tener en cuenta aquí:
Estamos buscando directorios, no archivos, así que usaremos -type d
.
El directorio de destino está incluido en el conjunto de directorios buscados por find
, por lo que usamos ! -path '...'
para evitar esa ruta.
No desea intentar mover el directorio superior, por lo que agregamos -mindepth 1
para comenzar a buscar debajo de esa ruta. Asimismo, -maxdepth 1
obliga a find
a no descender a las subcarpetas (dices que tienes subcarpetas y que estas contienen solo archivos ).
(Esto no es necesario aquí, ya que usamos -maxdepth 1
pero... )Mover un directorio cambiará la estructura del directorio. Por lo tanto, agregamos -prune
al final. Esto elimina la ruta movida de la lista de directorios que find
considerará. Sin esto, find
intentaría ingresar a directorios no -existentes (si se encontrara y moviera un directorio ).
Поскольку команда nc
внутри <(...)
также будет считываться со стандартного ввода.
Более простой пример:
$ nc -l 9999 >/tmp/foo &
[1] 5659
$ echo text | cat <(nc -N localhost 9999) -
[1]+ Done nc -l 9999 > /tmp/foo
Куда делись text
? Через неткат.
$ cat /tmp/foo
text
Ваша программа и nc
конкурируют за один и тот же стандартный ввод, и nc
получает его часть.
epoll ()или poll (), возвращаемые с помощью E/POLLIN, только сообщат вам, что одиночное чтение()может не блокироваться.
Не то чтобы вы могли выполнять много операций чтения одного байта ()до новой строки, как делаете вы.
Я говорю может , потому что чтение ()после epoll (), возвращенное с помощью E/POLLIN, может по-прежнему блокироваться.
Ваш код также попытается прочитать EOF и полностью проигнорирует все ошибки чтения ().