비슷한 이름의 파일을 찾고 더 좁혀보세요.

비슷한 이름의 파일을 찾고 더 좁혀보세요.

내 미디어 플레이어는 이름은 정확히 같지만 확장자가 ".t"인 새 파일을 생성하여(같은 폴더에) 비디오 파일을 시청한 것으로 표시합니다. 예를 들어, "SeinfeldS07E02.mp4"를 보면 "SeinfeldS07E02.mp4.t"라는 파일이 생성됩니다.

시청한 모든 비디오 파일을 자동으로 다른 폴더로 이동하고 싶고 가장 좋은 방법은 *.t 파일을 찾는 셸 스크립트를 거쳐 이름의 기반이 되는 원본 파일을 찾아 해당 파일을 다른 폴더로 이동하는 것이라고 생각했습니다. 폴더. *.t 파일을 찾아 이동하는 매우 간단한 스크립트가 이미 있지만 범위를 더 좁히는 방법을 모르겠습니다. 이것이 가능한가?

답변1

파일 이름에 공백이 포함되거나 그보다 더 심각한 문제가 발생하는 것을 방지하려면 다음에서 직접 모든 것을 실행하는 것이 좋습니다 find.

find /PATH/TO/SOURCE -name '*.mp4' \
    -exec sh -c '[ -e "$1.t" ]
                 && mv -- "$1" /PATH/TO/TARGET
                 && rm -- "$1.t"' _ {} \;

답변2

for i in $(find /path -type f -name "*.mp4.t") ;execute mv $(echo $i | sed "s/.mp4.t/.mp4/") /path/to/otherfolder / ;완성된

내 생각엔 그 정도면 충분할 것 같아

시뮬레이션해 보세요:

[root@h2g2w ~]# mkdir {toto,titi}
[root@h2g2w ~]# touch toto/{a,b,a.t,b.t,c}
[root@h2g2w ~]# for i in $(find toto/ -type f -name "*.t") ; do mv $(echo $i | sed "s/\.t//") titi/ ; done
[root@h2g2w ~]# ls -l titi
total 0
-rw-r--r--. 1 root root 0  1 janv. 15:13 a
-rw-r--r--. 1 root root 0  1 janv. 15:13 b
[root@h2g2w ~]# rm -rf toto titi
[root@h2g2w ~]# #OK only a & b have moved

관련 정보