С помощью GNU find (1)
, xargs (1)
и grep (1)
:
дублируйте структуру каталогов:
src = / path / to / source
dest = / other / path / to / destination
pat = 'some_grep_pattern'
cd "$ dest" {{ 1}} найдите "$ src" -тип d! -path "$ src" -printf '% P \ 0' | xargs -0 mkdir -p
копировать файлы с заданным шаблоном:
cd "$ src"
grep -rlZ "$ pat" | \
(cd "$ dest"; \
xargs -0 sh -c '\
while [$ # -ne 0]; do \
grep " $ pat "" $ src / $ 1 ">" $ 1 "; \
touch -r" $ src / $ 1 ">" $ 1 "; \
shift; \
готово ' sh)
восстановить права доступа, предполагая Linux и предполагая, что у вас нет имен файлов со встроенными символами новой строки:
cd "$ src"
getfacl -RPe. | (cd "$ dest"; setfacl --restore = -)
Как у меня это работает:
xorg-server
и xinit
. Выполните эти команды в окне оболочки Cygwin:
startxwin
DISPLAY = localhost: 0.0 xterm
Однако, честно говоря, консоль CygWin по умолчанию лучше, чем XTerm, поэтому я продолжал ее использовать.
просто экспортируйте
экспорт DISPLAY=localhost :0.0
чтобы сделать его постоянным, добавьте это в свой профиль.bash _
Я запускаю графические программы без скрипта, т.е. startxwin <myapp>
следующим образом:
/etc/bash.bashrc
:export DISPLAY=:0.0
C:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin"
/bin/kate
П.С. Я решил свою ошибку с помощью Eclipse IDE:
qt.qpa.screen: QXcbConnection: Could not connect to display <...>
Could not connect to any X display.
Я добавил системную переменную Windows:DISPLAY=:0.0