와일드카드를 사용하여 파일에 대한 심볼릭 링크 만들기

와일드카드를 사용하여 파일에 대한 심볼릭 링크 만들기

여러 파일에 대한 심볼릭 링크를 만들고 싶습니다.

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).

관련 정보