Windows DOS에서는 이 for
명령을 사용하여 생산성을 크게 높이고 수많은 작업을 한 번에 수행할 수 있습니다. PowerShell에서는 훨씬 더 좋습니다. Linux에서는 어려움을 겪습니다.
다른 드라이브의 일부 폴더에 대한 일괄 소프트 링크를 만들려면 어떻게 해야 합니까?
그렇게 하면 ln -s 2013-02-*
완전히 미친 짓을 하고 임의의 폴더에 링크를 만듭니다.
그래서 명령 대체를 사용하려고 하는데 echo
먼저 테스트해 보니 문제는
echo 'prepend/'`ls /drive/ -1`
preprend/ 문자열을 첫 번째 항목 앞에만 추가합니다. 이는 제거 명령을 사용하여 명령 대체 작업을 한 번 수행했지만 내가 생각한 대로 작동하지 않는다는 것을 알려줍니다(각 ls 결과에 대해 단일 명령 생성).
for 루프가 필요하게 되었습니다. "foreach $row in (ls -1) do (something)"을 어떻게 수행합니까?
답변1
링크를 넣을 폴더부터 시작하면 다음과 같이 작동합니다.
ln -s sourcefolder/2013-02-* .
물론 완벽하게 합리적인 "for" 명령도 있습니다.
for var in path/* ; do echo "prepend$var" ; done
편집: 한 프로그램을 사용하여 다른 프로그램에 인수 목록을 제공하는 일반적인 방법은 백틱: ``이므로 다음을 수행할 수 있습니다.
for x in `ls -1` ; do program $x ; done
그러나 ls에는 몇 가지 마법이 있으므로 다른 프로그램에 대한 입력으로 사용하는 경우 -1을 넣을 필요가 없습니다. * 패턴("glob")이 있는 파일 목록을 얻을 수 있습니다.