여러 파일에 대한 심볼릭 링크를 만들고 싶습니다.
ln -s dev-*.php 's/dev-(.*\.php)/$1/'
Results hoped for:
site.php links to dev-site.php
file.php links to dev-file.php
이것을 달성하는 가장 깨끗한 방법은 무엇입니까?
답변1
글쎄, 둘 다 같은 디렉토리에 있다면 bash 또는 다른 Bourne 스타일/POSIX 쉘에서 다음과 같은 작업을 수행할 수 있습니다.
for FILE in dev-*; do ln -s "$FILE" "${FILE#dev-}"; done
이렇게 하면 "dev-"로 시작하는 파일에 대해 "dev-" 없이 심볼릭 링크가 생성됩니다.
답변2
나는 보통 짧은 줄을 사용합니다.
for file in dev-*.php; do ln -s $file $(echo "$file" | sed 's/^dev-//'); done
이는 "dev-*.php" 파일을 반복하여 "dev-" 없이 새 이름을 얻은 다음 심볼릭 링크를 생성합니다.
답변3
이를 통해 zsh
다음을 수행할 수 있습니다.
autoload zmv # typically in ~/.zshrc
zmv -Lsv 'dev-(*.php)' '$1'
bash
또는 기타 POSIX 쉘 사용 (포함 zsh
):
for f in dev-*.php; do
ln -s "$f" "${f#dev-}"
done
site.php
그것이 존재하고 디렉토리(또는 디렉토리에 대한 심볼릭 링크)라면 그 dev-site.php
안에 심볼릭 링크가 있을 수 있습니다. GNU를 사용하면 이를 방지하기 위한 옵션을 ln
추가할 수 있습니다 -T
( zmv
사용하여 -o -T
옵션 -T
을 에 전달 ln
).