find 명령의 결과에서 심볼릭 링크 (소프트 링크)를 만들려고합니다. 나는 파일 이름 앞에 ./을 제거하기 위해 sed를 사용하고 있습니다. 나는 링크를 저장할 경로의 끝에 파일 이름을 붙여 넣을 수 있도록이 작업을 수행하고 있습니다. 나는 우분투 서버 8.04와 함께이 일을하고있다. 찾기에서 심볼릭 링크 생성
나는 그러나 결과 파일 이름, 그래도 작동하지 않았다How do I selectively create symbolic links to specific files in another directory in LINUX?
됐습니다 - 나의 문제에 대한 해결책의 종류이 게시물에서 배운, 그래서 AWK를 배우려고 시작 그리고 나서 sed를 결정했다.
저는이를 수행하기 위해 한 줄짜리 루프를 사용하고 있습니다. 문제는 루프의 구조가 파일 이름을 분리하여 파일 이름의 각 단어에 대한 링크를 만드는 것입니다. 꽤 많은 파일이 있고 링크 된 파일의 파일 이름을 가져 오는 각 링크로 프로세스를 자동화하고 싶습니다.
저는 기본적인 bash 명령에 익숙하지만 커맨드 라인 전문가는 아닙니다. 나는 이것을 ls와 awk로 시작하고 찾아서 움직이면서 움직였다. 내 sed 구문은 아마 더 좋을 수도 있지만 이틀 동안 이것을 배웠고 나는 지금 막 달라 붙어있다. find -type f -name "*txt*" | sed -e 's/.//' -e 's$/$$'; do echo ln -s $t ../folder2/$t;
에서 t에 대한
어떤 도움이나 조언이 크게 감상 할 수
을 수행. 감사.
당신은 피할 수'/'목록을 전달하여 find''의 출력한다. 경로. 'find */-options ...'나는 옵션도있을 것이라고 생각한다. – tripleee
작동하지 않는 링크의 문제점은 상대 경로 이름이 링크 대상과 관련이 있어야한다는 것입니다. 루프 하나의 디렉토리를 시작하기 위해 다시 작성 ('find source -options ... -exec ln -s '{}'target \;'), 절대 경로를 사용하거나'sed' 스크립트를 확장하여 링크 대상을 목적지 (trivially 앞에'../ source /'를 추가하십시오). 'ln -s'에 대한 첫 번째 인수는 어떤 식 으로든 재 작성되지 않으며, 심볼릭 링크의 내용으로 축약되어 사용됩니다. 링크 작성시 기존 파일로 해석되는지 여부 또는 요구 사항이 없습니다. – tripleee
당신은'sed 's %^\ ./%%''를 의미한다고 생각합니다. 정규 표현식에서 슬래시를 허용하기 위해'sed'는 's' 명령 다음에 구두점 문자를 사용할 수 있습니다. 단, 슬래시는 전통적인 기본 구분 기호이며'vi '에서 검색 문자를 모방하고'ed ' 그것. 또는 분리 문자를 백 슬래시 이스케이프하여 표현식에서 리터럴 문자로 인용 할 수도 있습니다. – tripleee