Попробовать cd -P
.
tim@ls:~$ mkdir a
tim@ls:~$ ln -s a b
tim@ls:~$ cd b
tim@ls:~/b$ pwd
/home/tim/b
tim@ls:~/b$ cd ..
tim@ls:~$ cd -P b
tim@ls:~/a$ pwd
/home/tim/a
Можно также использовать set -o physical
заставить это поведение сохраниться в течение времени жизни рабочей оболочки.
Проверьте https://stackoverflow.com/questions/10456784/behavior-of-cd-bash-on-symbolic-links для некоторой более хорошей информации.
Одна опция состоит в том, чтобы использовать install
команда вместо cp
. Это имеет опцию создать все ведущие каталоги.
find source -name '*.z' -exec install -D {} dest \;
Вы не можете передать данные по каналу к mkdir
тот путь. Вы могли сделать что-то вроде этого:
find source -name '*.z' -exec sh -c 'mkdir -p newDirectory && cp "$@" newDirectory' _ {} +
или (принимающий имена файлов, не содержащие новые строки)
find source -name '*.z' | while IFS= read -r foo; do
mkdir -p newDirectory;
cp "$foo" newDirectory;
done
или если Вы только хотите создать один каталог, таким образом, имя всегда является тем же:
mkdir newDirectory; find source -name '*.z' -exec cp {} newDirectory \;
find
изменяет CWD, когда он идет, он создаст каталог в том же месте.
– terdon♦
12.10.2013, 18:58
mkdir
.
– terdon♦
12.10.2013, 18:58
-d
должен использоваться вместо капитала-D
. – ccpizza 28.09.2016, 19:55