-1 for 루프를 사용하여 디렉토리의 파일 이름을 검색하십시오. 이 버전에서는 ".old"확장자가없는 파일 이름 만 반복합니다. 루프 내에서 파일의 이름을 새 이름으로 바꿉니다. bash unix — Shay 소스 5 그것은 숙제와 같이 끔찍한 것을 읽습니다. — garyjohn
0 bash 4+에 대한 액세스를 가정합니다 ( bash --version ) 이것은 2 개의 라이너로 할 수 있습니다 : shopt -s extglob for f in !(*.old); do mv -- "$f" new_"$f"; done — evilsoup 소스
-1 그 사이에있는 것을 대체해야합니다. do 과 done 이것은 당신이 사용할 수있는 방법의 예입니다. $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 - — Ali 소스 공백이있는 파일 이름은 for 기본적으로 공백을 분리합니다. 개행 문자를 포함한 파일명에 대해서는, ls 개행을 나누기. — evilsoup
-1 이것이 숙제 문제가 아니기 때문에 가장 좋은 방법을 알고 싶다면 find를 사용하십시오. find /startfolder -not -name '*.old' -exec mv {} newname_{} \; 이렇게하면 접미사 'old'가없는 모든 파일을 가져와 newname_ 접두어로 바꿉니다. for 루프는 필요하지 않습니다. — Paul 소스
-1 for filename in $(ls $1) do echo $filename | grep "\.old$" > /dev/null if [ $? != 0 ] then mv $1/$filename $1/$filename.old fi done — user853582 소스