유닉스 셸 프로그래밍 디렉토리를 통해 반복하기


-1

for 루프를 사용하여 디렉토리의 파일 이름을 검색하십시오. 이 버전에서는 ".old"확장자가없는 파일 이름 만 반복합니다.

루프 내에서 파일의 이름을 새 이름으로 바꿉니다.


5
그것은 숙제와 같이 끔찍한 것을 읽습니다.
garyjohn

답변:


0

bash 4+에 대한 액세스를 가정합니다 ( bash --version ) 이것은 2 개의 라이너로 할 수 있습니다 :

shopt -s extglob
for f in !(*.old); do mv -- "$f" new_"$f"; done

-1

그 사이에있는 것을 대체해야합니다. dodone 이것은 당신이 사용할 수있는 방법의 예입니다. $f

#!/bin/sh

cd /data
list=`ls -rt`

for f in $list
do
    c=`grep -c or=90 $f`
    if [ "$c" -gt "0" ]; then    
        echo "file is $f and it has $c"
    fi
done

cd -

공백이있는 파일 이름은 for 기본적으로 공백을 분리합니다. 개행 문자를 포함한 파일명에 대해서는, ls 개행을 나누기.
evilsoup

-1

이것이 숙제 문제가 아니기 때문에 가장 좋은 방법을 알고 싶다면 find를 사용하십시오.

find /startfolder -not -name '*.old' -exec mv {} newname_{} \;

이렇게하면 접미사 'old'가없는 모든 파일을 가져와 newname_ 접두어로 바꿉니다.

for 루프는 필요하지 않습니다.


-1
for filename in $(ls $1)
do
        echo $filename | grep "\.old$" > /dev/null
                if [ $? != 0 ]
                then
                        mv $1/$filename $1/$filename.old
                fi
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.