os x dosya adından eğik çizgiyi kaldır


0

Merhaba, tüm eğik çizgileri tüm dosyalarımdan kaldırmak istiyorum, ancak bunu ana dizindeki her dizin için yinelemeli olarak yapın.

Özyineli çalışmayan bu betiği nasıl değiştirmeliyim?

for f in "$1"/*; do
dir="$(dirname "$f")"
file="$(basename "$f")"
mv -- "$f" "${dir}/${file//[^_-0-9A-Za-z.]}"
done

veya daha iyisi Yalnızca dosya adlarındaki eğik çizgiyi değiştirmek istiyorum, ancak ana klasördeki her alt klasör için mi?

tebrik Max

Yanıtlar:


0

BSD katmanında bir eğik çizgi, yol ayırıcıdır. Eğik çizgi içeren bir dosya adı ile karşılaştığınızda, çekirdek eğik çizgi anlamına gelir. / iki noktaya :. Yani, bulucu uygulamasında bir dosya adı benziyor olabilir foo/bar ancak BSD katmanında benziyor foo:bar.

Yani, dizin ağacı kullanımı yürümek find ile dosyaları bulmak için : onların adına. Ardından, bir satır içi komut dosyası kullanın. -execdir İki nokta üst üste (bulucu uygulamasında eğik çizgiler) dosya adlarından kaldırmak için.

find . -type f -name '*:*' -execdir bash -c ' for file
    do
        echo mv -- "${file}" "${file//:}"
    done' sh {} \;

Bu sadece mv emir ve operandlar. Çıktının size istediğiniz sonuçları vereceğini düşünüyorsanız, echo.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.