단일 레벨 하위 디렉터리가 많은 특정 디렉터리에서 실행되는 스크립트를 작성하려고 합니다. 스크립트는 각 하위 디렉터리로 CD를 이동하고 디렉터리의 파일에 대해 명령을 실행한 다음 CD를 통해 다음 디렉터리로 계속 이동합니다. 이를 수행하는 가장 좋은 방법은 무엇입니까?
답변1
for d in ./*/ ; do (cd "$d" && somecommand); done
답변2
cd
가장 좋은 방법은 전혀 사용하지 않는 것입니다.
find some/dir -type f -execdir somecommand {} \;
execdir
유사 exec
하지만 작업 디렉토리가 다릅니다.
-execdir command {} [;|+]
Like -exec, but the specified command is run from the
subdirectory containing the matched file, which is not normally
the directory in which you started find. This a much more
secure method for invoking commands, as it avoids race
conditions during resolution of the paths to the matched files.
POSIX가 아닙니다.
답변3
for D in ./*; do
if [ -d "$D" ]; then
cd "$D"
run_something
cd ..
fi
done
답변4
방법 1:
for i in `ls -d ./*/`
do
cd "$i"
command
cd ..
done
방법 2:
for i in ./*/
do
cd "$i"
command
cd..
done
방법 3:
for i in `ls -d ./*/`
do
(cd "$i" && command)
done
이것이 유용하길 바랍니다. 모든 순열과 조합을 시도해 볼 수 있습니다.
감사해요:)